使用 JAX-RPC 接收隐式 SOAP 头

可以使现有的 Java™ API for XML-based RPC (JAX-RPC) Web Service 客户机从隐式 SOAP 头接收值。通过修改客户机代码来接收隐式 SOAP 头,可以在入局 web service 响应中接收特定信息。

开始之前

要完成本任务,需要可以用来接收隐式 SOAP 头的 Web service 客户机。

隐式 SOAP 头是符合下列其中一种描述的 SOAP 头:
  • 在 Web 服务描述语言 (WSDL) 文件的绑定中声明为 SOAP 头的消息部件,但消息定义未由 WSDL 文件中的 portType 元素引用。
  • 未包含在 WSDL 文件中的元素。

处理程序和服务端点可以通过使用带附件的 SOAP API for Java (SAAJ) 数据模型来处理隐式或显式 SOAP 头。

不能处理受保护的 SOAP 头。对于客户机应用程序,如果 SOAP 头声明为受其自有组件(例如,Web Service 安全性)保护,那么该 SOAP 头不可访问。如果尝试处理受保护的 SOAP 头,那么会发生异常。

关于此任务

客户机应用程序对 Stub 或 Call 对象设置属性,以发送和接收隐式 SOAP 头。

过程

  1. 创建 java.util.HashMap 对象
  2. 对于客户机要接收的每个隐式 SOAP 头,将一个条目添加到 HashMap 对象。 HashMap 条目键是 SOAP 头的 QName。HashMap 条目值为 null
  3. 对 Stub 或 Call 对象设置 HashMap 条目。 属性名为 com.ibm.websphere.webservices.Constants.RESPONSE_SOAP_HEADERS。该属性的值为 HashMap。
  4. 对 Stub 或 Call 对象发出远程方法调用。 Web Service 引擎从 Web Service 响应消息中抽取指定的响应头并将它们插入到 HashMap 中。在远程方法返回后,可从 HashMap 对象访问响应头。
    如果符合以下任何条件,将发生 JAXRPCException 错误:
    • HashMap 包含不是 QName 的键。
    • HashMap 包含表示 SOAP 头的键且该 SOAP 头声明为受自有组件保护。

结果

具有可从隐式 SOAP 头接收值的 JAX-RPC Web service 客户机。


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



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