JAX-WS SoapHandler con mensajes grandes: OutOfMemoryError

Al usar JAX-WS 2, veo un problema del que otros también han hablado. El problema es que si se recibe un mensaje SOAP dentro de un controlador, y ese mensaje SOAP es grande, ya sea debido a los elementos del cuerpo SOAP en línea que tienen mucho contenido, o debido a los archivos adjuntos de MTOM, entonces es peligrosamente fácil obtener una Error de memoria insuficiente.

La razón es que la llamada a getMessage () parece desencadenar una cadena de eventos que involucra leer todo el mensaje SOAP en el cable y crear un objeto (u objetos) que represente lo que había en el cable.

Por ejemplo:

...
public boolean handleMessage(SOAPMessageContext context)
{
    // for a large message, this will cause an OutOfMemoryError
    System.out.println( context.getMessage().countAttachments() );
...

Mi pregunta es: ¿existe algún mecanismo / solución conocida para tratar esto? Específicamente, sería bueno tener acceso a la parte SOAP en un mensaje SOAP sin forzar que los archivos adjuntos (si es MTOM por ejemplo) también sean aspirados.

Respuestas a la pregunta(3)

Su respuesta a la pregunta