Messaging Modes
Overview
Objects that implement the Provider
interface have two messaging modes:
- Message mode
- Payload mode
The messaging mode you specify determines the level of messaging detail that is passed to your implementation.
Message mode
When using message mode, a Provider
implementation works with complete messages. A complete message includes any binding specific headers and wrappers. For example, a Provider
implementation that uses a SOAP binding would receive requests as fully specified SOAP message. Any response returned from the implementation would also need to be a fully specified SOAP message.
You specify that a Provider
implementation uses message mode by providing the value java.xml.ws.Service.Mode.MESSAGE
as the value to the javax.xml.ws.ServiceMode
annotation.
@WebServiceProvider @ServiceMode(value=Service.Mode.MESSAGE) public class stockQuoteProvider implements Provider<SOAPMessage> { ... }
Payload mode
In payload mode a Provider
implementation works with only the payload of a message. For example, a Provider
implementation working in payload mode works only with the body of a SOAP message. The binding layer processes any binding level wrappers and headers.
When working with a binding that does not use special wrappers, such as the Artix ESB XML binding, payload mode and message mode provide the same results.
You specify that a Provider
implementation uses payload mode by providing the value java.xml.ws.Service.Mode.PAYLOAD
as the value to the javax.xml.ws.ServiceMode
annotation.
@WebServiceProvider @ServiceMode(value=Service.Mode.PAYLOAD) public class stockQuoteProvider implements Provider<DOMSource> { ... }
If you do not provide the @ServiceMode
annotation, the Provider
implementation will default to using payload mode.