【发布时间】:2017-12-11 18:40:56
【问题描述】:
我不认为我会在这里结束,但经过大量 Google 和 StackOverflow 搜索后,我来到了这里。
This is my exact problem 只是我无力更改代码。
我正在尝试部署的 WAR 包括一个 JMS 库(即 javax.jms,我不能从 WAR 中排除它。)默认情况下 Jboss EAP 7 已经加载了它。 jar 的路径类似于 jboss/modules/system/layers/base/javax/jms/api/ain/jboss-jms-api_2.0_spec-1.0.0.Final-redhat-1.jar。由于加载了相同类的两个不同版本,我得到了 ClassCastException。
org.apache.activemq-ra.ActiveMQConnectionFactory cannot to be cast to javax.jms.ConnectionFactory
所以,我希望 Jboss不 加载 javax.jms 以便我的应用程序可以使用 WAR 中包含的 JAR。
所以,我想知道是否有任何方法可以全局排除模块(适用于所有 WAR 部署)。
在每次部署时排除它也可以。我确实意识到使用 jboss-deployment-structure.xml 可以实现它,但我无法让它工作。
这是我尝试过的:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure
xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<exclude-subsystems>
<subsystem name="javax" />
<subsystem name="javax.jms" />
</exclude-subsystems>
</deployment>
</jboss-deployment-structure>
和
<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure
xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<exclusions>
<module name="javax" />
<module name="javax.jms" />
<module name="javax.jms.api" />
</exclusions>
</deployment>
</jboss-deployment-structure>
我将文件放在 WEB-INF 目录中。它没有用。它仍然从 Jboss EAP 的 modules 文件夹中加载 JMS 类。那么,我该如何正确地做到这一点呢?
【问题讨论】:
-
我不确定这是否可行,但子系统名称应为
messaging-activemq,例如<subsystem name="messaging-activemq"/>排除在外。但是我不确定 JMS 是否会在您的部署中正常工作,除非您还包含一个实现。 -
喂,你找到解决办法了吗?
-
@sghaierali 我刚刚标记了对我有用的答案。 stackoverflow.com/a/47912334/1175279
标签: java jboss jboss-eap-7