該想法是直接從開發工作區的分散目錄結構提供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
網絡資源,這種變化不會在瀏覽器重新加載當前頁面後,在運行的應用程序直接可見。