2013-10-22 82 views
3

我有多個web應用程序,每個使用spring-hibernate和其他開源庫和portlet,所以現在基本上每個war文件都包含這些jar文件。如何將這些罐子移動到一個共同的位置,以便我不必將這些罐子放在每個戰爭檔案中?我的罐子是D:/目錄中的地方。在JBoss AS 7中放置共享庫的位置

我試着創建模塊,但沒有成功。例如如果我加罐子

<resources> 
    <resource-root path="mylib.jar"/> 
</resources> 

和mylib.jar需要另一個ABC類。 ABC類在我的WAR類路徑中。這裏我在加載這個模塊時得到異常。 mylib.jar找不到ABC類並拋出異常。

+0

使用模塊肯定是要走的路最近JBoss版本的常用庫。在這裏我已經詳細解釋了模塊創建,也許iit可以幫助你:http://stackoverflow.com/questions/14852144/jboss-7-project-libraries-as-a-module/14852880 – kostja

+0

編輯問題:模塊解釋異常 –

+0

如果您的公共lib /模塊需要一個將與應用程序一起部署的類,那麼恐怕這是一個失敗的原因。但是,spring-hibernate應該取決於你的應用程序,這聽起來很奇怪。也許你可以先解決一些問題,或者我可能誤解了這個問題。 – kostja

回答

3

如果這些庫在多個應用程序中重用,最好的解決方案可能是創建JBoss模塊。

例如,OJDBC庫用於我正在開發的幾個項目中。所以,我給JBoss 7添加了一個新模塊:https://community.jboss.org/wiki/CreateAModuleForOracleDatasourceInJBoss711Final(這只是一個例子)。

但是你說過,你嘗試過創建模塊,但沒有運氣。有什麼問題?你有錯誤嗎?

編輯 與更新後的問題有關的答案已更新。

所以,如果我理解正確的話,我們可以把你的庫分爲兩類:

  1. 第一類是「標準庫」:spring,hibernate的是,log4j等,所以,這些庫可能被添加模塊插入到JBoss AS中並在每個WAR中重用(範圍=在Maven的依賴中提供)。
  2. 其他任何非標準庫(即,自己編寫的)也可以作爲模塊添加。如果這些庫需要一些其他的依賴 - 這些依賴關係必須在模塊的XML文件中列出,如描述:https://docs.jboss.org/author/display/MODULES/Module+descriptors

希望這有助於至少一點:)

+0

編輯的問題:例外解釋模塊 –

+0

如何檢查JBOSS中的類加載。我想看看類加載順序。可能有一個機會,模塊首先加載並在類路徑加載後加載類。所以這可能是一個錯誤的原因 –