JDK 1.6、JAX-WS RI 2.2.5を使用しています サービスエンドポイントでハンドラが追加されていない場合は完全に機能します。しかし、Webメソッドが呼び出されたときに、サーバー側でSOAPハンドラーを追加し、ハンドラーsoapMessageContext.getMessage()。toString()を実行すると、クライアントは内部サーバーエラー500を取得します。そして、サーバ側では、以下のトレースが出力されます。 SOAPハンドラでメッセージを取得するときにNoSuchMethodError
Mar 14, 2012 4:26:15 PM com.sun.xml.ws.transport.http.servlet.WSServletDelegate doGet
SEVERE: caught throwable
java.lang.NoSuchMethodError: com.sun.istack.XMLStreamReaderToContentHandler.<init>(Ljavax/xml/stream/XMLStreamReader;Lorg/xml/sax/ContentHandler;ZZ[Ljava/lang/String;)V
at com.sun.xml.ws.message.stream.StreamMessage.writePayloadTo(StreamMessage.java:355)
at com.sun.xml.ws.message.stream.StreamMessage.writeTo(StreamMessage.java:462)
at com.sun.xml.ws.message.AbstractMessageImpl.readAsSOAPMessage(AbstractMessageImpl.java:198)
at com.sun.xml.ws.handler.SOAPMessageContextImpl.getMessage(SOAPMessageContextImpl.java:84)
at com.myapp.jaxws.TestingSOAPHandler.handleMessage(TestingSOAPHandler.java:21)
実際に私は確かではありません、それはlibsの互換性や重複の問題か他のものですか?どんな助けも高く評価されます。ここで
は、エンドポイントの設定です:
<endpoint name="TestingService" implementation="com.myapp.jaxws.TestingService" url-pattern="/jaxws/TestingService" enable-mtom="true">
<handler-chains xmlns="http://java.sun.com/xml/ns/javaee">
<handler-chain>
<handler>
<handler-name>MyLogicalHandler</handler-name>
<handler-class>com.myapp.jaxws.TestingLogicalHandler</handler-class>
</handler>
<handler>
<handler-name>MySOAPHandler</handler-name>
<handler-class>com.myapp.jaxws.TestingSOAPHandler</handler-class>
</handler>
</handler-chain>
</handler-chains>
</endpoint>
私はプロジェクトライブラリとしてJDK 1.5とJAX-WS RIで同じコードを試しましたが、完璧に動作します。 JDK 1.6で何がうまくいかないのか分かりません。 –