2012-05-08 6 views
2

私はCXF RESTfulサービスとCXF WS/SOAPサービスをホストし、JBoss(6.0.0.FINAL)上で動作しているプロジェクト(myproject)を持っています。 RESTfulインターフェイスはすべての内部システムで使用され、SOAPインターフェイスはサードパーティシステムで使用されます(コールバックインターフェイスとして)CXF/SOAP Webサービスを呼び出そうとしている間にLinkageErrorが発生しました

以下のURLは正常に動作しています。

  • RESTのURL:http://localhost:8080/myproject/internal/someOperationcontent-type: application/jsonとPOST本体)

  • SOAPのWSDL:http://localhost:8080/myproject/cbsoap?wsdl

今私の問題は、実際のSOAP呼び出しが成功しないということです。私はSOAPUIを使ってSOAP呼び出しを試みますが、WSDLに問い合わせることができます。私は、次のエラーを取得しています: -

 
javax.servlet.ServletException: Servlet execution threw an exception 
    org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:67) 

root cause 

java.lang.LinkageError: loader constraint violation: when resolving overridden method "org.apache.cxf.jaxb.attachment.JAXBAttachmentUnmarshaller.getAttachmentAsDataHandler(Ljava/lang/String;)Ljavax/activation/DataHandler;" the class loader (instance of org/jboss/classloader/spi/base/BaseClassLoader) of the current class, org/apache/cxf/jaxb/attachment/JAXBAttachmentUnmarshaller, and its superclass loader (instance of), have different Class objects for the type r used in the signature 
    org.apache.cxf.jaxb.JAXBDataBase.getAttachmentUnmarshaller(JAXBDataBase.java:78) 
    org.apache.cxf.jaxb.io.DataReaderImpl.createUnmarshaller(DataReaderImpl.java:123) 
    org.apache.cxf.jaxb.io.DataReaderImpl.read(DataReaderImpl.java:156) 
    org.apache.cxf.interceptor.DocLiteralInInterceptor.handleMessage(DocLiteralInInterceptor.java:109) 
    org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263) 
    org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) 
    org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:207) 
    org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:209) 
    org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:191) 
    org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:114) 
    org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:185) 
    org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:108) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:754) 
    org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:164) 
    org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:67) 
+0

java.lang.LinkageError:ローダー制約違反:オーバーライドされたメソッドを解決するときorg.apache.cxf.jaxb.attachment.JAXBAttachmentUnmarshaller.getAttachmentAsDataHandler(Ljava/lang/String;)Ljavax/activation/DataHandler ; "現在のクラスorg/apache/cxf/jaxb/attachment/JAXBAttachmentUnmarshallerとそのスーパークラスローダ(インスタンス)のクラスローダ(org/jboss/classloader/spi/base/BaseClassLoaderのインスタンス)は、タイプ 'rは署名で使用されました。 ' –

+0

私は、異なる' Class'オブジェクトを意味しますか?間違っているクラスローダーゲームのように間違いなく聞こえます。 (これらのことをデバッグするのに十分な経験はありません) –

+0

JAXBAttachmentUnmarshallerクラスが2回(またはすでに)ロードされており、getAttachmentAsDataHa ndlerメソッドのシグネチャが異なることを理解しています。それが意味をなさないかどうかはわかりません。しかし、それらのうちの1つを取り除く必要があるが、どちらがどのように、どのようにわからない。 –

答えて

0

私はついにこの問題を解決しましたが、本当に変です。

  1. 私は依存関係としてCXF-RT-フロントエンド・JAXWSとCXFバンドル-RSを追加し、いくつかの除外をマーク - >桟橋サーバ、gernomino-サーブレット。
  2. 私はbeans.xmlをWEB-INFフォルダの下に置いていましたが、src/main/resourcesの下に置かなければなりませんでした。 beans.xmlは、WEB-INFの代わりにクラスパスの下にあると予想されます。

ご回答ありがとうございます。

5

LinkageErrorは、JBossが、一般的にあなたのアプリケーションは、JBossが制限も検討特定のライブラリの独自のコピーをパッケージ化することによって引き起こされています。これらは通常java.*javax.*パッケージのものです。

スタックトレースを見ると、私はその犯人がjavax.activation.DataHandlerだと思います。あなたのアプリにバンドルされているJARファイルをチェックし、そこに何もないことを確認してください。存在する場合は削除します。

javax.activation.DataHandlerではない可能性がありますが、その内容はそれに依存している可能性があります。

+0

これはパッケージlib(WEB-INF \ lib)のjarファイルです。 。どのようなものがそれに依存しているかは、どのようにして見つけられますか? aopalliance-1.0.jar、asm-3.3.jar、commons-logging-1.1.1.jar、cxf-api-2.4.6.jar、cxf-bundle-jaxrs-2.4.6.jar、cxf-common-ユーティリティー2.4.6.jar、cxf-rt-bindings-soap-2.4.6.jar、cxf-rt-bindings-xml-2.4.6.jar、cxf-rt-core-2.4.6.jar、cxf- rt-databinding-jaxb-2.4.6.jar、cxf-rt-frontend-jaxws-2.4.6.jar、cxf-rt-frontend-simple-2.4.6.jar、cxf-rt-transports-common-2.4。 6.jar、cxf-rt-transports-http-2.4.6.jar、cxf-rt-ws-addr-2.4.6.jar、cxf-tools-common-2.4.6.jar (続き... ) –

+0

(続き...) ジェロニモ-activation_1.1_spec-1.1.jar ジェロニモ-annotation_1.0_spec-1.1.1.jar ジェロニモ-javamail_1.4_spec-1.7.1.jar ジェロニモ-servlet_2.5_spec- 1.1.2.jar jettison-1.3.1.jar jetty-continuation-7.4.5.v201 10725.jar jetty-http-7.4.5.v20110725.jar jetty-io-7.4.5.v20110725.jar jetty-security-7.4.5.v20110725.jar jetty-util-7.4.5.v20110725。 JSR311-API-1.1.1.jar のlog4j-1.2.9.jar neethi-3.0.1.jar SLF4J-API-1.6.2.jar 春-AOP-3.0.6.RELEASE.jar をjarファイルspring-asm-3.0.6.RELEASE.jar spring-beans-3.0.6.RELEASE.jar spring-context-3.0.5.RELEASE.jar (続き...) –

+0

(続き...) spring-core-3.0.5.RELEASE.jar spring-expression-3.0.6.RELEASE.jar spring-web-3.0.5.RELEASE.jar 0でそれらすべてを開き(:stax2-API-3.1.1.jar woodstoxコア-ASL-4.1.1.jar XML-レゾルバ-1.2.jar XMLSCHEMAコア-2.0.1.jar –

関連する問題