在我们的java应用程序中,我们必须使用apache CXF 3.0.0和WSS4j 2.1.1库。为了避免类加载器问题: 如何在我的耳朵项目中使用Apache CXF 3.X和WSS4J 2.X,而不是在JBoss 6.3.0 EAP模块中安装的CXF和WSS4J(旧版本)?
答案 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文件,并在容器中集中管理整个组织的依赖关系)。在这种情况下,您可以将其设置为提供范围。
请记住,打包自己的库可能会破坏支持,因为它们不是容器提供的实现位的一部分。