Jboss EAP 6.4.4 Class Loading jaxb jars
问题描述:
我试图在jboss 6.4.4上部署一个web应用程序。 耳朵文件包含Jaxb罐。 当调用Web服务有一个与XML绑定一个问题:Jboss EAP 6.4.4 Class Loading jaxb jars
ClassCastException: attempting to cast vfs:/content/App.ear/jaxb-api-2.1.jar/javax/xml/bind/JAXBContext.class to jar:__file:/home/myworkingfolder/jboss-eap-6.4.4/modules/system/layers/base/javax/xml/bind/api/main/jboss-jaxb-api_2.2_spec-1.0.4.Final-redhat-3.jar!/javax/xml/bind/JAXBContext.class.
Please make sure that you are specifying the proper ClassLoader.
如何排除JBoss的JAXB LIB?
谢谢。
答
jar jboss-jaxb-api_2.2_spec-1.0.4.Final-redhat-3.jar包含在模块“javax.xml.bind.api”中。
1-我在开始时试图通过在jboss-deployment-structure.xml文件中排除此模块。
<exclusions>
<module name="javax.xml.bind.api"/>
</exclusions>
模块甚至没有与此明确排除排除。
该模块由javaee模块隐式加载。
2 - 于是,我就排除JavaEE的模块,并把JBoss的部署,structure.xml内的module.xml内容,而不javax.xml.bind.api模块
<module name="javaee.api"/>
</exclusions>
<dependencies>
<module name="javax.activation.api" export="true"/>
<module name="javax.annotation.api" export="true"/>
<module name="javax.ejb.api" export="true"/>
<module name="javax.el.api" export="true"/>
<module name="javax.enterprise.api" export="true"/>
<module name="javax.enterprise.deploy.api" export="true"/>
<module name="javax.inject.api" export="true"/>
<module name="javax.interceptor.api" export="true"/>
<module name="javax.jms.api" export="true"/>
<module name="javax.jws.api" export="true"/>
<module name="javax.mail.api" export="true"/>
<module name="javax.management.j2ee.api" export="true"/>
<module name="javax.persistence.api" export="true"/>
<module name="javax.resource.api" export="true"/>
<module name="javax.rmi.api" export="true"/>
<module name="javax.security.auth.message.api" export="true"/>
<module name="javax.security.jacc.api" export="true"/>
<module name="javax.servlet.api" export="true"/>
<module name="javax.servlet.jsp.api" export="true"/>
<module name="javax.transaction.api" export="true"/>
<module name="javax.validation.api" export="true"/>
<module name="javax.ws.rs.api" export="true" services="export"/>
<!-- <module name="javax.xml.bind.api" export="true"/> -->
<module name="javax.xml.registry.api" export="true"/>
<module name="javax.xml.soap.api" export="true"/>
<module name="javax.xml.ws.api" export="true"/>
<!-- This one always goes last. -->
<module name="javax.api" export="true"/>
<dependencies>
此方法排除javax.xml.bind.api。
但我encoutered此错误:
Caused by: java.lang.NoClassDefFoundError: org/apache/cxf/frontend/ClientProxy
我由依赖增加CXF解决了这个错误:
<module name="org.jboss.ws.cxf.jbossws-cxf-client" services="import" />
<module name="org.apache.cxf.impl">
<imports>
<include path="META-INF"/>
<include path="META-INF/cxf"/>
</imports>
</module>
JBoss的部署,structure.xml变得非常详细... 其他解决方案?