【发布时间】:2012-03-30 20:57:33
【问题描述】:
我正在使用 JDK 1.6、JAX-WS RI 2.2.5 当没有在服务端点添加处理程序时,事情就完美了。但是当调用web方法时,在服务器端添加SOAP Handler后,handler执行soapMessageContext.getMessage().toString(),客户端得到Internal Server Error 500(这意味着服务器在处理请求时遇到了错误)。在服务器端,打印以下跟踪:
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)
经过一番谷歌搜索,它似乎是它的库问题。 JAX-WS 也在 JDK 1.6 中,我也添加到我的项目中。但是当我从项目中删除 JAX-WS 2.2.5 库时,它会触发一些类丢失错误。
实际上我不确定,是库兼容性还是重复问题或其他问题。任何帮助将不胜感激。
这里是端点配置:
<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 出了什么问题。
标签: java web-services jax-ws