使用 JAX-RPC 检索传输头

可以使现有的 Java™ API for XML-based RPC (JAX-RPC) Web Service 客户机可用于从传输头中检索值。对于使用 HTTP 的请求,从 HTTP 响应消息中找到的 HTTP 头检索传输头。对于使用 Java 消息服务 (JMS) 的请求,将从 JMS 响应消息上找到的 JMS 消息属性检索传输头。

开始之前

您需要可以允许检索传输头的 Web service 客户机。

只有 Web service 客户机支持检索传输头,并且仅支持通过 HTTP 和 JMS 传输进行检索。Web service 客户机必须直接调用 JAX-RPC API,而不通过任何中间层(例如网关功能)进行调用。通过非 Web service API 在 Web Service 服务器上发送和检索传输头。

关于此任务

使用 JAX-RPC 编程模型时,客户机必须在 Stub 或 Call 对象上设置属性以便从传输头检索值。 设置属性后,将在针对该 Stub 或 Call 实例的后续方法调用的响应中读取值,直到关联的属性设置为 null 或废弃 Stub 或 Call 对象为止。

要从入站响应上的传输头检索值,请修改客户机代码。

过程

  1. 创建一个 java.util.HashMap 对象,其中包含要从入局响应消息检索的传输头的名称。
  2. 对于要从每个入局响应消息检索值的每个头,向 HashMap 添加一个条目。
    1. 将 HashMap 条目键设置为与传输头标识完全匹配的字符串。 可以使用保留的头名称定义头标识(例如,如果是 HTTP,那么使用 Cookie),也可以由用户定义头标识(例如,MyTransportHeader)。某些头标识以特定的方式处理,但是不执行其他检查来确认头标识值。要了解具有特殊考虑事项的 HTTP 头标识的更多信息,请阅读“传输头属性最佳实践”的相关信息。可以在 com.ibm.websphere.webservices.Constants 类中找到公共头标识字符串常量(例如 HTTP_HEADER_SET_COOKIE)。HashMap 条目值被忽略且不需要设置。空的 HashMap(例如,非 null 但是不包含任何密钥的 HashMap)将导致检索响应中的所有传输头。
  3. 使用 com.ibm.websphere.webservices.Constants.RESPONSE_TRANSPORT_PROPERTIES 属性设置 Stub 或 Call 对象上的 HashMap 条目。 设置 HashMap 时,在后续调用中使用 RESPONSE_TRANSPORT_PROPERTIES 属性从响应中检索头。如果将该属性设置为 null,那么不会从响应中检索任何头。要了解有关这些属性的更多信息,请参阅传输头属性文档。
  4. 对 Stub 或 Call 对象发出远程方法调用。 将从响应消息检索指定的传输头中的值并将这些值放在 HashMap 中。
    如果未正确设置此属性,那么您可能会遇到导致 JAXRPCException 错误的 API 使用错误。必须满足以下需求,否则进程将失败:
    • 在 Stub 或 Call 对象上设置的属性值必须是 null 或 HashMap 的实例。
    • 所有 HashMap 密钥必须是字符串数据类型,密钥不得为 null。

结果

您具有可从入局响应消息接收传输头的 JAX-RPC web service。

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



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