该想法是直接从开发工作区的分散目录结构提供Web应用程序,而不将模块打包到JAR中,然后在WAR中以WEB-INF/lib
结束。
主要好处是:
- 你并不需要建立档案。
- 当您更改工作空间中的资源时,更改会反映在正在运行的Web应用程序中,而无需重新部署Web应用程序或重新启动服务器。
使用Servlet 3.0,网络资源,也可以在库JAR捆绑META-INF/resources
,因此类和资源可以来自多个工作区目录。
Tomcat 7.0支持VirtualWebappLoader
和VirtualDirContext
以基于分散的资源和类目录的集合配置web应用程序。
要直接从Eclipse工作区服务您的Web应用程序,WTP产生合适的Tomcat配置在$WORKSPACE/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/conf/server.xml
符合项目结构 出于某种原因,WTP不直接使用Tomcat的加载器和上下文实现,但有其自己的WtpDirContext
和WtpWebappLoader
,略有不同但类似。 (我相信这种方法比Tomcat中的当前解决方案更旧,TLD扫描有一些特殊的逻辑 - 我不确定这是否仍需要最新的Tomcat版本。)这些helper classes包含在您注意到的org.eclipse.jst.server.tomcat.runtime.70.loader.jar
中。
没有即成模块,而不发布,当您在库模块中改变META-INF/resources
网络资源,这种变化不会在浏览器重新加载当前页面后,在运行的应用程序直接可见。