JAX-WS SoapHandler с большими сообщениями: OutOfMemoryError
Используя JAX-WS 2, я вижу проблему, о которой говорили и другие. Проблема заключается в том, что если сообщение SOAP получено внутри обработчика, и это сообщение SOAP является большим - будь то из-за встроенных элементов тела SOAP, которые имеют много содержимого, или из-за вложений MTOM - тогда опасно легко получить OutOfMemoryError.
Причина в том, что вызов getMessage (), кажется, запускает цепочку событий, которые включают чтение всего сообщения SOAP на проводе и создание объекта (или объектов), представляющих то, что было на проводе.
Например:
...
public boolean handleMessage(SOAPMessageContext context)
{
// for a large message, this will cause an OutOfMemoryError
System.out.println( context.getMessage().countAttachments() );
...
Мой вопрос: есть ли известный механизм / обходной путь для решения этой проблемы? В частности, было бы неплохо получить доступ к части SOAP в сообщении SOAP, не заставляя вложения (например, MTOM) также пылесосить.