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) также пылесосить.

Ответы на вопрос(3)

Ваш ответ на вопрос