In the scenario below, the body and header elements are in reverse order, which will cause issue for client application.
Step to reproduce :
a. Use WebServiceProvider as the server side, and return a soap message with the content below:
<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\"><SOAP-ENV:Body><provider>my message</provider></SOAP-ENV:Body></SOAP-ENV:Envelope>
b. Enabling addressing for the server/client side
The interceptor chain will be something like :
Chain org.apache.cxf.phase.PhaseInterceptorChain@29de29de. Current flow:
pre-logical [MAPAggregatorImpl, SwAOutInterceptor, SoapHeaderOutFilterInterceptor, SecurityVerificationOutInterceptor]
prepare-send [MessageSenderInterceptor, MessageModeOutInterceptor]
pre-stream [LoggingOutInterceptor, AttachmentOutInterceptor, StaxOutInterceptor]
pre-protocol [SAAJOutInterceptor, MAPCodec, PolicyBasedWSS4JOutInterceptor, UsernameTokenInterceptor]
It seems that, although we add a header checing in the SAAIOutInterceptor, while those addressing headers are not there at that time, then SoapOutInterceptor will add the header after the existing body elements.