在此之前,我使用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
?
请告知。
答案 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