使用 IBM 专有 Web Service 寻址 SPI 指定和获取消息寻址属性

使用专有 Web Service 寻址 (WS-Addressing) 系统编程接口 (SPI),可以通过 JAX-WS BindingProvider 请求上下文上的属性或 JAX-RPC Stub 或 Call 对象上的属性将 WS-Addressing 消息寻址属性 (MAP) 添加到出站客户机消息的 SOAP 头。当目标端点接收到该消息时,SPI 使该端点能够通过消息上下文中的属性来获取这些 MAP。

关于此任务

在 JAX-WS 标准中没有等同的 SPI。如果要在使用 JAX-WS 端点引用的客户机中设置消息寻址属性,那么必须将端点引用转换为 IBM 专有类,然后将它们与这些 SPI 一起使用。

如果您是使用 WS-Addressing 支持的 Web Service 开发者,或是使用 IBM 专有 WS-Addressing SPI 在 Web Service 消息上指定消息寻址属性(例如故障或回复端点引用)的系统程序员,请完成本任务。

IBM 专有 Web Service 寻址 SPI 中描述了可以设置或检索的属性以及属性实例的 Java™ 类型。 大多数属性的类型为 com.ibm.websphere.wsaddressing.EndpointReference,例如,目标、应答或故障端点引用。关系属性是包含 com.ibm.wsspi.wsaddressing.Relationship 类实例的 java.util.Set 对象。当要指定消息之间的关联(例如,在响应消息中,可能要指定要应答的消息标识)时,请使用关系。操作属性是 AttributedURI 对象,它标识目标端点内的特定方法或操作。
注意: 对于要符合 WS-Addressing 的消息,目标端点引用和操作属性是必需的。

过程

  1. 在客户机上,从服务获取端点引用并将其与 BindingProvider 对象请求上下文或者 Stub 或 Call 对象相关联,如创建使用 Web service 寻址的 JAX-RPC Web Service 应用程序中所述。
  2. 创建必需属性的实例。 例如,如果需要指定端点引用以便目标服务将应答发送至此端点引用,请创建 com.ibm.websphere.wsaddressing.EndpointReference 类的实例以用作 WSADDRESSING_REPLYTO_EPR 属性。
  3. 通过将所需的属性与 BindingProvider 对象请求上下文,或者 Stub 或 Call 对象相关联来设置这些属性。如果使用的是 Stub 或 Call 对象,请使用 setProperty(String property_name, Object value) 方法。 注意,与第一步所需的端点引用不同,这些端点引用不必转换为其他类型,因为它们在 SOAP 消息头,而不是 SOAP 消息主体中传递。 以下示例在 BindingProvider 对象请求上下文上设置目标端点引用和回复端点引用:
    import javax.xml.ws.BindingProvider;
    ...
     javax.xml.ws.Service jaxwsServiceObject=...;
     Printer myPrinterProxy = jaxwsServiceObject.getPort(portName, Printer.class);
     
     javax.xml.ws.BindingProvider myBindingProvider = (javax.xml.ws.BindingProvider)myPrinterProxy;
    
     // Retrieve the request context for the BindingProvider object
     Map myMap = myBindingProvider.getRequestContext();
    
     // Associate the endpoint reference for the web service. This property is required for the message 
     // to be WS-Addressing compliant.
      myMap.put(WSADDRESSING_DESTINATION_EPR, destinationEpr);
    
     // Associate the endpoint reference that represents the reply to the request context
     myMap.put(WSADDRESSING_REPLYTO_EPR, replyToEpr);
    对 BindingProvider、Stub 或 Call 对象进行调用时,产品将适当的 MAP 添加到消息头。
  4. 在服务器上,通过线程上当前存在的 javax.xml.ws.WebServiceContext 或 javax.xml.rpc.handler.MessageContext 对象从入站消息检索 MAP。 当 WebSphere® Application Server 接收到消息时,它会将 MAP 信息放入线程的消息上下文中,从而使服务可以访问此信息。例如,可以通过使用端点企业 Bean 的会话上下文来检索消息上下文。有关消息上下文的更多信息,请参阅 JSR-109 标准。 以下示例使用 Web Service 上下文检索回复端点引用:
    import javax.xml.ws.handler.MessageContext;
    import javax.xml.ws.WebServiceContext; 
    ...
    
      // Obtain the message context from the WebService context 
      private WebServiceContext wsContext;
      MessageContext context = wsContext.getMessageContext();
    
      // Retrieve the reply endpoint reference
      replyToEpr = context.getProperty(WSADDRESSING_INBOUND_REPLYTO_EPR);

指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_wsa_maps
文件名:twbs_wsa_maps.html