在JBoss中,我可以配置“共享库”位置吗?

时间:2009-12-03 20:20:14

标签: java deployment jboss

我在开发环境中使用JBoss 4.2.2.GA应用服务器。我有一个WAR文件MyWar.war和一个JAR文件ExternalJar.jar。这些文件的结构如下:

应用程序WAR文件:

MyWar.war
|
|--- AppClass1.class
|
|--- AppClass2.class    

外部jar文件(由客户提供):

ExternalJar.jar
|
|--- ExternalClass.class

ExternalClass需要使用AppClass1,而AppClass2需要使用ExternalClass。当我在JBoss中部署WAR并将JAR放在JBoss的类路径中时,在运行应用程序时,我在实例化ExternalClass时遇到了LinkageError。似乎WAR看到ExternalClass,但ExternalClass无法访问WAR中的类。

如果我手动将ExternalJar放入WAR文件(WEB-INF / lib)中,它可以正常工作。但我们宁愿不修改存档文件以保持与我们的生产部署的一致性。

JBoss中是否有任何配置或设置允许包含在 app 的类路径中的共享库文件夹?

2 个答案:

答案 0 :(得分:1)

您可以通过执行以下操作来禁用WAR文件类加载器隔离:

打开此文件 %JBOSS_HOME%\server\<serverName>\deploy\jboss-web.deployer\META-INF\jboss-service.xml

将此属性设置为true: <attribute name="UseJBossWebLoader">true</attribute>

您应该能够将扩展JAR文件放在带有WAR文件的deploy/目录中。

如果您使用相同的库加载多个WAR文件,此设置可能会导致问题,因此YMMV。

答案 1 :(得分:1)

您可以像部署战争一样部署jar文件。由于JBoss使用共享类加载器,因此您的jar将能够访问从战争中加载的类。