我在Eclipse中使用向导将JAX-WS Handler添加到我的项目中。它实现了SOAPHandler。
然后,在Project Explorer中,在 JAX-WS Web服务&gt;下; <服务端点接口> MyServiceSoap ,我使用了配置处理程序的选项。我指向我的Handler类,并在myServiceSoap.java文件所在的同一文件夹中创建了新文件handler-chain.xml。
我查看了我的MyServiceSoap.java,我看到声明@HandlerChain(file =“handler-chain.xml”)
所以,据我所知,所有作品都已到位。但是,当我试图打电话给这项服务时, handleMessage永远不会被调用。
这是我的handleMessage代码:
@Override
public boolean handleMessage(SOAPMessageContext context) {
SOAPMessage msg = context.getMessage();
return true;
}
我在此方法中设置了断点,希望我能够看到正在发送到远程Web服务的消息的内容。 我还要注意,当我尝试使用此服务时,目前我收到错误“WebServiceException:标头中没有Content-type”。所以,也许,这个错误发生在handleMessage有机会运行之前。
如果有人能为这个问题提供更多的启示,我将不胜感激。感谢。
答案 0 :(得分:2)
我遇到了同样的问题,但我的客户端是由maven使用jaxws:wsimport生成的。从来没有调用过我的处理程序,所以解决方案是声明@HandlerChain(file="MyHandlerFile.xml")
,Xml文件(在本例中)应该在同一个包里面,你的类,例如:
com.my.package.MyClientWS.java
com.my.package.MyHandlerFile.xml
声明注释:
@WebService(.....)
@HandlerFile(file="MyHandlerFile.xml")<br>
public class MyClientWS extends Service ....
处理程序链文件:
<?xml version="1.0" encoding="UTF-8"?>
<handler-chains xmlns="http://java.sun.com/xml/ns/javaee">
<handler-chain>
<handler>
<handler-name>package.to.my.MyHandler<handler-name>
<handler-class>package.to.my.MyHandler</handler-class>
</handler>
</handler-chain>
</handler-chains>