The JAXWS implementation within IBM WebSphere 7 and 8 appears to have some problems when it comes to soap handlers and large MTOM attachments. It appears that the entire message, including all attachment binary content, is read into memory when getMessage() is invoked on the SOAPMessageContext object. This can very easily cause the JVM to run out of available memory.
@Override
public boolean handleMessage(SOAPMessageContext context) {
SOAPMessage soapMsg = context.getMessage();
...
}
In the above code snippet, context.getMessage() can result in out of memory exceptions if the incoming request attachments are larger than the amount of free memory available in the JVM.
How can I get access to the SoapHeader elements without triggering this undesired functionality? I see that the SOAPMessageContext class has a getHeaders(...) method but I'm not sure how to use it exactly. I'm specifically unsure what to pass in for the JAXBContext. Can anybody provide an example or explanation how to use this method?
Here's another related stackoverflow article : JAX-WS SoapHandler with large messages: OutOfMemoryError
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…