可以使现有的 Java™ API
for XML-based RPC (JAX-RPC) Web Service 客户机通过使用传输头发送应用程序定义的信息以及 Web Service 请求。
开始之前
需要可以允许发送传输头的 JAX-RPC 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 对象为止。
要在出站请求的传输头中发送值,请按如下所示修改客户机代码:
过程
- 创建包含传输头标识的 java.util.HashMap 对象。
- 针对您希望客户机发送的每个传输头,将一个条目添加到 HashMap 对象。
- 将 HashMap 条目键设置为与传输头标识完全匹配的字符串。 可以使用保留的头名称定义头标识(例如,如果是 HTTP,那么使用 Cookie),也可以由用户定义头标识(例如,MyTransportHeader)。某些头标识以特定的方式处理,但是就像处理头标识值一样,不会执行其他检查。要了解具有特殊考虑事项的 HTTP 头标识的更多信息,请阅读“传输头属性最佳实践”的相关信息。可以在 com.ibm.websphere.webservices.Constants 类中找到公共头标识字符串常量(例如 HTTP_HEADER_SET_COOKIE)。
- 将 HashMap 条目值设置为包含传输头的值的字符串。
- 使用 com.ibm.websphere.webservices.Constants.REQUEST_TRANSPORT_PROPERTIES 属性设置 Stub 或 Call 对象上的 HashMap 条目。 设置 REQUEST_TRANSPORT_PROPERTIES 属性值时,后继调用使用该 HashMap 设置出局请求中的头值。如果 REQUEST_TRANSPORT_PROPERTIES 属性值设置为 null,那么后续调用中不使用 HashMap 来设置出局请求中的头值。要了解有关这些属性的更多信息,请参阅传输头属性文档。
- 对 Stub 或 Call 对象发出远程方法调用。 对于每种方法调用,HashMap 的头和关联值将添加到出局请求中。如果调用使用 HTTP,那么传输头将作为 HTTP 头在 HTTP 请求中发送。如果调用使用 JMS,那么传输头将作为 JMS 消息属性进行发送。
如果未正确设置此属性,那么您可能会遇到导致 JAXRPCException 错误的 API 使用错误。必须满足以下需求,否则进程将失败:
- 在 Stub 或 Call 对象上设置的属性值必须是 HashMap 对象或 null。
- HashMap 不能为空。
- HashMap 中的每个键都必须是 String 对象。
- HashMap 中的每个值都必须是 String 对象。
结果
您有配置为发送传输头的 JAX-RPC Web service 客户机。