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 实施会使用有效负载模式。