2013-03-22 38 views
5

Eclipse的Web工具平台(WTP)允许您配置Tomcat来“服务器模块,而出版”:服务模块的技术细节没有在Eclipse WTP和Tomcat中发布?

Web内容将直接从动态Web项目的“的WebContent”文件夹中提供服务。定制的上下文用于使项目的依赖项在Web应用程序的类加载器中可用。

在5个步骤的过程中(只是开玩笑,你选择了步骤#),技术上会发生什么,以及Eclipse生成的文件在哪里?我注意到Eclipse在Tomcat lib目录中生成了一个org.eclipse.jst.server.tomcat.runtime.70.loader.jar文件。

回答

13

该想法是直接从开发工作区的分散目录结构提供Web应用程序,而不将模块打包到JAR中,然后在WAR中以WEB-INF/lib结束。

主要好处是:

  • 你并不需要建立档案。
  • 当您更改工作空间中的资源时,更改会反映在正在运行的Web应用程序中,而无需重新部署Web应用程序或重新启动服务器。

使用Servlet 3.0,网络资源,也可以在库JAR捆绑META-INF/resources,因此类资源可以来自多个工作区目录。

Tomcat 7.0支持VirtualWebappLoaderVirtualDirContext以基于分散的资源和类目录的集合配置web应用程序。

要直接从Eclipse工作区服务您的Web应用程序,WTP产生合适的Tomcat配置在$WORKSPACE/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/conf/server.xml

符合项目结构 出于某种原因,WTP不直接使用Tomcat的加载器和上下文实现,但有其自己的WtpDirContextWtpWebappLoader,略有不同但类似。 (我相信这种方法比Tomcat中的当前解决方案更旧,TLD扫描有一些特殊的逻辑 - 我不确定这是否仍需要最新的Tomcat版本。)这些helper classes包含在您注意到的org.eclipse.jst.server.tomcat.runtime.70.loader.jar中。

没有即成模块,而不发布,当您在库模块中改变META-INF/resources网络资源,这种变化不会在浏览器重新加载当前页面后,在运行的应用程序直接可见。