JAX-WS处理程序 - handleMessage未运行

时间:2013-01-18 17:37:51

标签: java web-services jax-ws handler

我在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有机会运行之前。

如果有人能为这个问题提供更多的启示,我将不胜感激。感谢。

1 个答案:

答案 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>