2012-03-12 50 views
5

現在我可以加載在EAR/lib下的jar。 但我想把罐子放到一個共同的路徑上,供其他應用程序使用。 我發現jboss-deployment-structure.xml文件的標籤可以做到這一點。 但它不起作用。我得到了ClassNotFound異常。 我不知道爲什麼?如何在JBoss 7上使用外部罐子?

<deployment> 
    <resources> 
     <resource-root path="/common/test.jar" /> 
    </resources> 
</deployment> 

回答

11

在不同的應用程序中使用全局庫的一種方法可以通過將它們作爲模塊提供來實現。 因此,通過您作爲服務器提供商提供的庫擴展模塊。

舉例: 爲了讓您test.jar提供給所有的應用程序,創建與模塊名稱和main子目錄(如modules/commons/test/main)的文件夾。

將您的庫放在那裏,並使用名稱module.xml的模塊描述文件。 示例內容:

<module xmlns="urn:jboss:module:1.0" name="commons.test"> 
    <resources> 
     <resource-root path="test.jar"/> 
    </resources> 
</module> 

現在的庫可用於所有應用程序。 要訪問模塊,您的應用程序必須在清單中定義依賴關係。

應用MANIFEST.MF


Dependencies: commons.test 

這可以通過在Maven的構建時也做了。 查看https://docs.jboss.org/author/display/AS7/Class+Loading+in+AS7的詳細信息

請注意,您正在修改服務器本身。所有使用你的模塊的應用程序都依賴於它。與模塊commons.test有依賴關係的應用程序不會被部署在沒有提供此模塊的服務器上。

+0

是否可以在不觸摸服務器(全局)模塊的情況下做同樣的事情?即在EAR內部創建模塊? – Sriram 2013-03-12 09:48:31

+0

是否有通配符而不是指定每個庫的可能性? – Inv3r53 2013-03-19 06:00:38