Handler不应直接实现javax.xml.ws.handler.Handler接口

时间:2018-03-28 03:59:19

标签: java web-services soap message-handlers

在此之前,我使用SOAPHandler< SOAPMessageContext >来处理来自webservice的数据。代码如下:

public class MyBillSoapMessageHandler implements
    SOAPHandler< SOAPMessageContext >  {

    @Override
    public boolean handleMessage(SOAPMessageContext context) {

       // This following line something will hit out of memory
       SOAPMessage message = context.getMessage( );

       // some other code continue...
    }
}

我尝试谷歌并阅读此链接中的内容: JAX-WS SoapHandler with large messages: OutOfMemoryError

根据我的理解,用户MessageHandlerContext优于SOAPMessageContext,因此我尝试更改它,成为:

public class MyBillSoapMessageHandler implements
    MessageHandler< MessageHandlerContext >  {

    @Override
    public boolean handleMessage(MessageHandlerContext context) {

       //... code here ...//
    }
}

但是,当我运行它时,我点击了:

  

引起:javax.xml.ws.soap.SOAPFaultException:com.mybill.ws.camel.MyBillSoapMessageHandler处理程序不应直接实现javax.xml.ws.handler.Handler接口。

我不确定为什么会收到此错误。有没有理由因为我的服务器没有使用MessageHandlerContext

请告知。

1 个答案:

答案 0 :(得分:0)

我设法使用Message Accessor修复它。

我的示例代码如下:

Object accessor = context.get("jaxws.message.accessor");

if (accessor != null) {
                baosInString = accessor.toString();
                }

基于IBM网站的建议。 http://www-01.ibm.com/support/docview.wss?uid=swg1PM21151