2

CXFRESTfulサービスとCXFWS/ SOAPサービスをホストし、JBoss(6.0.0.FINAL)で実行しているプロジェクト(myprojectなど)があります。RESTfulインターフェースはすべての内部システムで使用され、SOAPインターフェースはサードパーティシステムで(コールバックインターフェースとして)使用されます。

次のURLは正常に機能しています。

  • REST URL :(http://localhost:8080/myproject/internal/someOperation およびcontent-type: application/jsonPOST本文)

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

今私の問題は、実際のSOAP呼び出しが成功しないことです。私はSOAPUIを使用してSOAP呼び出しを試していますが、WSDLを照会できるようにしています。次のエラーが発生します:-

javax.servlet.ServletException:サーブレットの実行により例外がスローされました
    org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:67)

根本的な原因

java.lang.LinkageError:ローダー制約違反:オーバーライドされたメソッド「org.apache.cxf.jaxb.attachment.JAXBAttachmentUnmarshaller.getAttachmentAsDataHandler(Ljava / lang / String;)Ljavax / Activation/DataHandler;」を解決するとき 現在のクラスのクラスローダー(org / jboss / classloader / spi / base / BaseClassLoaderのインスタンス)、org / apache / cxf / jaxb / attachment / JAXBAttachmentUnmarshaller、およびそのスーパークラスローダー(のインスタンス)には、署名で使用されるタイプr
    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)
4

2 に答える 2

5

LinkageErrorJBoss は通常、JBoss が制限されていると見なす特定のライブラリの独自のコピーをアプリがパッケージ化することによって発生します。これらは通常、java.*およびjavax.*パッケージに含まれるものです。

スタック トレースを見ると、原因はjavax.activation.DataHandler. アプリにバンドルされている JAR ファイルを調べて、そのようなものが含まれていないことを確認してください。ある場合は、それを削除します。

ではないかもしれませんがjavax.activation.DataHandler、依存するものかもしれません。

于 2012-05-08T10:27:39.117 に答える
0

私は最終的に問題を解決しましたが、それは本当に奇妙です。

  1. cxf-rt-frontend-jaxws と cxf-bundle-rs を依存関係として追加し、いくつかの除外をマークします -> jetty-server、gernomino-servlet。
  2. WEB-INF フォルダーの下に beans.xml がありましたが、src/main/resources の下に配置する必要がありました。beans.xml は、WEB-INF ではなく、クラスパスの下にあると予想されます。

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

于 2012-05-10T09:53:45.800 に答える