4

我在 Eclipse 中使用向导将 JAX-WS 处理程序添加到我的项目中。它实现了 SOAPHandler。

然后,在 Project Explorer 中,在JAX-WS Web Services > Service Endpoint Interfaces > MyServiceSoap下,我使用了配置处理程序的选项。我指向我的 Handler 类,并在 MyServiceSoap.java 文件所在的同一文件夹中创建了新文件 handler-chain.xml。

我查看了 MyServiceSoap.java 并看到声明 @HandlerChain(file = "handler-chain.xml")

因此,据我所知,所有部件都已到位。但是,当我尝试调用此服务时,handleMessage 永远不会被调用。

这是我的句柄消息代码:

@Override
public boolean handleMessage(SOAPMessageContext context) {
        SOAPMessage msg = context.getMessage();
        return true;
}

我在此方法中设置了断点,希望能够看到发送到远程 Web 服务的消息内容。我还必须注意,当我尝试使用此服务时,目前我收到错误“WebServiceException: No Content-type in header”。所以,也许,这个错误发生在 handleMessage 有机会运行之前。

如果有人能为这个主题提供更多的光线,我将不胜感激。谢谢。

4

1 回答 1

3

我有同样的问题,但我的客户端是由 maven 使用 jaxws:wsimport 生成的。我的处理程序从未被调用,所以解决方案是声明@HandlerChain(file="MyHandlerFile.xml"),Xml 文件(在这种情况下)应该在你的类所在的同一个包中,例如:

com.my.package.MyClientWS.java
com.my.package.MyHandlerFile.xml

声明注释:

@WebService(.....)
@HandlerChain(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>
于 2013-04-15T13:34:17.597 回答