2009-07-04 21 views
4

我有需要使用一個單獨共享信息的兩個Tomcat Web應用程序。我已經通過將jared類放在tomcat公共目錄中來實現它的工作。每個webapp然後獲得單身人士的相同副本。我想要做的就是在eclipse中整合這個行爲。我希望通用類是一個單獨的項目,每次在eclipse中啓動tomcat服務器時,它都會被整合到tomcat的通用類加載器中。任何人都知道如何配置eclipse來做到這一點?配置項目,使最終在tomcat「共同」類加載器

回答

1

我設法使它工作。這是我做的:

  • 在eclipse工作區中創建了一個common項目。
  • 創建了兩個Web應用程序,分別稱爲firstsecond,它們應共享common項目。

當創建web應用程序時,使用tomcat配置創建Servers項目。

  • 變化catalina.properties的服務器項目中,並添加行shared.loader=/path-to-workspace/common/bin

這對於開發非常有效。每次創建新的構建時,所有內容都是同步的。部署您需要將common項目轉換爲common.jar並將其放入${catalina.home}/lib

1

可能是一種可能性可能是extend the tomcat class loader爲了使這種類裝載器在other directories than WEB-INF/lib搜索,這個由:

  • 擴展org.apache.catalina.loader.WebappClassLoader並覆蓋findClassInternal方法。

  • 配置Tomcat使用擴展類加載器。
    這是適當的Web應用程序配置文件中有以下元素Tomcat的conf/Catalina/hostname路徑下進行:

    ...

然後在Eclipse中,你可以設置你的共同項目上「構建路徑中的必需項目」,這使其成爲類路徑的一部分。

這意味着您的擴展類加載器必須能夠尋找其他CLASSE:

  • 無論是在一個固定的預定義的路徑
  • 或在classpath中預先定義的路徑。

沒有測試過自己,但可能會給你在這個問題上的領先。


一個更簡單的解決方案是在評論提出noselasd,採取的Tomcat GlobalNamingResources Component的優勢。

然而,FAQ does mentions

當您在Eclipse中創建一個新的Tomcat服務器,新服務器嚮導假定它是不安全的影響Tomcat安裝這個新的服務器將使用的當前行爲。

WTP能夠避免使用Tomcat的從一個安裝運行多個服務器實例的能力影響安裝了Tomcat的行爲。因此,對於每一個新的Tomcat默認配置斷絕創建將與在嚮導中選擇Tomcat的運行相關聯的Tomcat的安裝新的服務器實例。
如果你希望在Eclipse中新的Tomcat服務器運行相同的情況下,在Tomcat安裝運行默認的批處理文件,你可能會感到驚訝時Eclipse中的Tomcat服務器沒有按預期的行爲。

Tomcat服務器配置是可以改變的,以免它運行相同的實例作爲Tomcat安裝。

在這裏你會找到如何modify the server.xml in WTP

+0

根本不需要這麼介入。 Tomcat具有服務器範圍的設置,您可以在server.xml中定義自己的全局資源,這些資源可以與所有的webapps共享。 http://tomcat.apache.org/tomcat-5.5-doc/config/globalresources.html你可以使用你自己的類,而不是像在例子中那樣使用Integer。但我不知道如何在Eclipse中使用server.xml和全局lib /目錄。 – nos 2009-07-05 00:40:16

相關問題