2017-09-29 3 views
0

jboss 6.4.4にWebアプリケーションをデプロイしようとしています。 earファイルにはJaxb jarが含まれています。 Webサービスを呼び出すときにXMLバインディングに問題があります:Jboss EAP 6.4.4クラスjaxb jarをロードする

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を除外するために、どのように?

ありがとうございました。

答えて

0

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のモジュールを除外し、javax.xml.bind.apiモジュールなしのjboss-展開するstructure.xml内

<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> 
をそのmodule.xmlコンテンツを入れてみました

このメソッドは、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は非常に冗長になる... その他のソリューション?

関連する問題