我在开发环境中使用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中是否有任何配置或设置允许共享库文件夹包含在应用程序的类路径中?
最佳答案
您可以通过执行以下操作禁用WAR文件类加载器隔离:
打开这个文件%JBOSS_HOME%\server\<serverName>\deploy\jboss-web.deployer\META-INF\jboss-service.xml
将此属性设置为true:<attribute name="UseJBossWebLoader">true</attribute>
您应该能够将扩展JAR文件与WAR文件一起放在deploy/
目录中。
如果要使用相同的库(即YMMV)加载多个WAR文件,则此设置可能会导致问题。
关于java - 在JBoss中可以配置“共享库”位置吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1842635/