欢迎来到天天文库
浏览记录
ID:30792740
大小:61.50 KB
页数:5页
时间:2019-01-03
《war包vs集成服务器的java应用-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、WAR包vs集成服务器的Java应用-编程开发技术WAR包vs集成服务器的Java应用木文由ImportNew・MarkGZ翻译自javacodegeekso欢迎加入翻译小组。转载请见文末要求。大部分服务器端J3V3应用程序(如Web或面向服务)都是在容器内运行。传统方式是将应用打成WAR包用于分发。这和ZIP压缩包是同样的目录结构,包含了所有的库和运行时的应用间的相互依赖。因为这种格式具有共通性,你可以部署到你偏爱的容器,例如Tomcat>Jetty>JBoss>GlassFish等。但是有一种方法彻底颠覆了这种模型。在这种方法中,Java应用就像普通程序一
2、样可通过命令行执行,而不是被部署到容器小。它将容器和应用绑在一起。许多语言使用这种方法。Python的Django框架就包含了进行开发和测试的服务器,而RubyonRa订s也有可用于生产环境的嵌入式服务器。对使用Jetty部署的Java应用来说,这个概念也存在了一段吋间。然而,离规范化述比较远,结果还是将WAR包部署到Tomcat服务器。现在也出现了类似的呼声。去年的DcvNcxus会议,我去了JamesWard的讲座,他当时在Heroku做“开发推广”。James推荐和支持将捆绑了服务器的应用程序部署到Heroku的云平台。他的讲座主要是关于Java和Sca
3、la的Play框架,Play框架嵌入了Netty,类似于Rails服务器。不同于Grails框架的是,它使用一个Django式服务器的开发方式,仍然是使用WAR包发布,Phy框架从开发到生产环境一•直使用其自带服务器。James提倡在所有的Java应用程序使用这种方法。嵌入式体验当我开始写HibernateSerachbyExample的时候,我希望着重于HibernateSearch上,而不是其他框架或服务器问题。所以我没有用Spring,而是用Servlet3.0来写这本书的示例应用程序。我通常使用Eclipse作为口己的开发环境,并测试木地Tomcat上
4、的web应用。不过,为了支持使用TntelliJ,Netbeans和不使用IDE的读者。我想在构建脚本嵌入一个测试服务器,以便读者无需安装或配置任何东西就可以运行示例代码。通过Maven来使用嵌入式服务器我的第一个目标是使用Meivcn脚木启动服务器,这样读者就不必手动安装服务器或将它导入到IDE里o将JettyMavenPlugin添加到项目的POM文件后。可以使用以下命令:mvncleanjetty:run为了让修改了的静态文件在服务器运行的时候可以立刻生效。因为,我碰到过文件被锁定的情况,导致修改后的问题不能保存。研究后发现Jetty的默认设置会引起Wi
5、ndows映射文件锁定。可以在配置文件更改useFileMappedBuffer屈性。首先,你必须打开Jetty的JAR包找到相应的配置文件.在Maven本地仓库就可以找的这个JAR包(就是jetty-webapp,而不是jetyy-server)。复制一份webdefault.xml,将useFi1eMappedBuffer改为false,将其另存到在你的项目中,并更新MavenPOM文件:org.mortbay.jettyjetty-maven-plugin6、d>8.1.7.v20120910${basedir}/sre/main/webapp/WEB-TNF/webdefault.xml虽然有点小麻烦,但是还是搞定了。通过其他构建工具来使用嵌入式服务器我知道,许多Java开发人员不喜欢Maveno所以,我想提供一份使用Ant构建的示例应用程序。需要在bu订d.
6、d>8.1.7.v20120910${basedir}/sre/main/webapp/WEB-TNF/webdefault.xml
7、xml配置什么才可以让Ant使用到Jetty呢?可以使用AntintegrationforJetty,但它比Maven更麻烦。即使使用了Ivy这样的依赖管理系统,Ant脚本还是无法下载和管理嵌入式服务器。你必须自己卜•载一个独立的Jetty服务器,然后手动复制到您的项目。谁不想把这6M可执行的二进制文件添加到源码屮呢?当你复制完了Jetty的JAR包后,你还要手动添加另一个关于Ant集成的JAR。出乎意料的是,支持的最新版木是Jetty7(实现的是Servlet2.5规范,都已经八年了)。上个月我发现可以支持Jetty8了,但是我是去年秋天写的这本书。我必须重
8、写我的示例程序,将Servlet3.0
此文档下载收益归作者所有