41.2. 在服务提供商中使用 XML
摘要
Provider 接口是一个低级的 JAX-WS API,可让您实施一个服务提供商,以作为原始 XML 直接与消息一同工作。在实施提供程序接口的对象之前,消息不会打包成 JAXB 对象。
41.2.1. 消息传递模式
概述
实现提供程序接口的对象有两个 消息传递模式 :
您指定的消息传递模式决定了传递给您的实施的消息传递详情级别。
消息模式
在使用 消息模式 时,提供程序实施将适用于完整的消息。完整的消息包括任何绑定特定标头和打包程序。例如,一个使用 SOAP 绑定的提供程序实现会接收请求,作为完全指定的 SOAP 信息。从实施返回的所有响应都必须是完全指定的 SOAP 消息。
要指定 Provider 实施使用消息模式,方法是提供 java.xml.ws.Service.Mode.MESSAGE 作为 javax.xml.ws.ServiceMode
注解的值,如 例 41.9 “指定提供程序实施使用消息模式” 所示。
例 41.9. 指定提供程序实施使用消息模式
@WebServiceProvider @ServiceMode(value=Service.Mode.MESSAGE) public class stockQuoteProvider implements Provider<SOAPMessage> { ... }
有效负载模式
在 有效负载模式中,Provider 实施只用于消息有效负载。例如,在有效负载模式中工作的供应商实施只适用于 SOAP 消息的正文。绑定层处理任何绑定级别打包程序和标头。
在使用不使用特殊打包程序的绑定时,如 Apache CXF XML 绑定、有效负载模式和消息模式提供相同的结果。
要指定 Provider 实施使用有效负载模式,方法是提供 java.xml.ws.Service.Mode.PAYLOAD 作为 javax.xml.ws.ServiceMode
注解的值,如 例 41.10 “指定提供程序实施使用 Payload Mode” 所示。
例 41.10. 指定提供程序实施使用 Payload Mode
@WebServiceProvider @ServiceMode(value=Service.Mode.PAYLOAD) public class stockQuoteProvider implements Provider<DOMSource> { ... }
如果没有为 @ServiceMode
注释提供值,则 Provider 实施会使用有效负载模式。