0

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

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

根据我的理解, userMessageHandlerContext优于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吗?

好心提醒。

4

1 回答 1

0

我设法通过使用消息访问器来修复它。

我的示例代码如下:

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

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

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

于 2018-03-29T03:01:12.080 回答