java - 在 JBoss 中我可以配置一个 "shared library"位置吗?

标签 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 中是否有任何配置或设置允许将共享库文件夹包含在应用的类路径中?

最佳答案

您可以通过执行以下操作来禁用 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/

相关文章:

deployment - 如何使用 Rest Api 更新 k8s 中的部署?

azure - 自动将解决方案中的特定项目部署到Azure

java - 热交换代理和 DCEVM 的 Jboss JVM 参数配置

java - JBoss 绑定(bind) IP 地址

git - Capistrano 默认情况下是如何工作的?

java - 如何使用 "%"正确转换JPQL查询

java - super 只能高一级吗?

java - 在 Java 中访问对象成员

mysql - 谁能详细指导如何使用 SSL 加密通过 Wildfly 10 应用服务器连接到 AWS RDS MySql 实例

java - jetty-maven-plugin 多个 war 独立端口