41.2. 在服务提供商中使用 XML
摘要
Provider 接口是一个低级 JAX-WS API,它允许您实施一个服务供应商,作为原始 XML 直接处理消息。消息不会打包成 JAXB 对象,然后传递到实现 Provider 接口的对象。
41.2.1. 消息传递模式
概述
实施 Provider 接口的对象有两种 消息传递模式 :
您指定的消息传递模式决定了传递到您的实施的消息传递详情级别。
消息模式
在使用 消息模式 时,提供程序实施可用于完成消息。完整消息中包含任何绑定特定标头和打包程序。例如,使用 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> { ... }
有效负载模式
在 有效负载模式中,提供程序实施仅用于消息有效负载。例如,在有效负载模式下工作的供应商实施只适用于 SOAP 消息的正文。绑定层处理任何绑定级别的打包程序和标头。
在使用不使用特殊打包程序的绑定时,如 Apache CXF XML 绑定、有效负载模式和消息模式提供相同的结果。
要指定 Provider 实现使用有效负载模式,方法是提供值 java.xml.ws.Service.Mode.PAYLOAD 作为 javax.xml.ws.ServiceMode
注解的值,如 例 41.10 “指定 Provider Implementation Uses Payload Mode” 所示。
例 41.10. 指定 Provider Implementation Uses Payload Mode
@WebServiceProvider @ServiceMode(value=Service.Mode.PAYLOAD) public class stockQuoteProvider implements Provider<DOMSource> { ... }
如果没有为 @ServiceMode
注释提供值,则 Provider 实现使用 payload 模式。