Currently, the only implementation of the SoapMessage interface is SaajSoapMessage. SAAJ uses an DOM underneath, which is not very efficient when handling larger messages. A Streaming model, using StAX, is much more suitable for these larger messages.
We should provide such a streaming message model. It should be configurable whether the message payload should be cached or not. When cached, the message payload can be read multiple times. When it is not cached, it can only be read once. It should always be possible to read the message headers multiple times, since headers are required for interceptor handling.