2012-03-12 64 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