如何在我的耳朵项目中使用Apache CXF 3.X和WSS4J 2.X,而不是在JBoss 6.3.0 EAP模块中安装的CXF和WSS4J(旧版本)?

时间:2015-07-08 11:23:16

标签: java maven jboss cxf wss4j

在我们的java应用程序中,我们必须使用apache CXF 3.0.0和WSS4j 2.1.1库。为了避免类加载器问题: 如何在我的耳朵项目中使用Apache CXF 3.X和WSS4J 2.X,而不是在JBoss 6.3.0 EAP模块中安装的CXF和WSS4J(旧版本)?

1 个答案:

答案 0 :(得分:0)

由于JBoss类加载是模块化的,因此您可以创建jboss-deployment-structure.xml并在ear文件中排除CXF和WSS4J相关模块。请参阅此wiki page以供参考。您可以在模块文件夹module.xml文件下找到各个模块名称。

例如,要排除CXF服务器模块:

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
      <deployment>
        <exclusions>
          <module name="org.jboss.ws.cxf.jbossws-cxf-server"/>
        </exclusions>
      </deployment>
</jboss-deployment-structure>

您显然需要确保您的pom.xml正在为您的CXF和WSS4J版本提供所需的工件,而不是设置为提供的范围。或者,您可以创建自己的自定义JBoss模块文件夹,并在那里添加库,如果它们将由多个应用程序共享(有助于保持较小的EAR和WAR文件,并在容器中集中管理整个组织的依赖关系)。在这种情况下,您可以将其设置为提供范围。

请记住,打包自己的库可能会破坏支持,因为它们不是容器提供的实现位的一部分。