我在开发环境中使用 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 文件放在 deploy/
中包含您的 WAR 文件的目录。
如果您使用相同的库加载多个 WAR 文件,则此设置可能会导致问题,因此 YMMV。
关于java - 在 JBoss 中我可以配置一个 "shared library"位置吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1842635/