java - Jboss EAP 7 - 如何从部署中排除隐式模块 (javax.jms)?

标签 java jboss jboss-eap-7

我不认为我会在这里结束,但经过大量的谷歌和 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 类。那么,我该如何正确地执行此操作?

最佳答案

正确的 jboss-deployment-structure.xml 在这里:

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
    <deployment>
        <exclude-subsystems>
            <subsystem name="messaging-activemq"></subsystem>
        </exclude-subsystems>
        <exclusions>
            <module name="javax.jms.api"></module>
        </exclusions>
    </deployment>
</jboss-deployment-structure>

这样您就排除了消息传递子系统和 JMS api。

关于java - Jboss EAP 7 - 如何从部署中排除隐式模块 (javax.jms)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47759298/

相关文章:

java - 如何使用 Java 中的正则表达式提取该字符串?

java - 为什么Subject.doAs 根据登录用户而不是切换的主题返回主体?

java - 如何知道 Web 服务是否已启动

jboss - Jboss EAP 6 的默认管理控制台密码是什么

windows - JBoss - 导出异常 : Port already in use: 1098

spring-boot - 在 Spring-Boot 应用程序中出现错误 "Cause: AMQ119031: Unable to validate user"

spring - JBoss EAP 7.1 Spring-Data-JPA CDI 扩展

java - 使用ip地址和域名的区别

java - Hibernate criteria 查询不同对象的不同属性

java - 访客模式程序无法正常工作