2013-03-22 39 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網絡資源,這種變化不會在瀏覽器重新加載當前頁面後,在運行的應用程序直接可見。