启用网络服务自定义功能的附加步骤

启用网络服务用户定义功能后,您可以指定完整的SOAP消息作为输入,从而从网络服务提供商的响应中接收完整的SOAP消息。

准备工作

在完成这些步骤之前,请为 Web 服务用户定义函数设置 WLM 应用程序环境

建议 :对于网络服务功能,请使用DSNWLM_WEBSERVICES核心WLM环境。

关于本任务

在安装或迁移期间,以下网络服务用户定义功能由作业 DSNTIJRT 安装:
  • DSNWSCVV
  • DSNWSCVC
  • DSNWSCCV
  • DSNWSCCC

过程

设置网络服务用户自定义功能:

  1. 从网络服务提供商读取数据的默认超时时间为两秒。 通过在ENVAR参数值中使用键值对DB2SOAP_TIMEOUT=X其中X是一个以秒为单位的数字,用于指定超时值)重新定义Web服务用户定义的函数,从而增加超时值。
  2. 如果您想使用SOAP版本 1.2 ,请在ENVAR参数值中包含键值对 DB2SOAP_VERSION=SOAP_12。 默认情况下, Db2 使用 SOAP 版本 1.1。 如果您为 DB2SOAP_VERSION 指定了除 SOAP_12 以外的任何其他值,则假定 SOAP 版本为 1.1。

    如果您的子系统使用SOAP版本 1.1 和SOAP版本 1.2 ,则必须定义两组SOAP用户自定义函数:一组不带ENVAR( "DB2SOAP_VERSION=SOAP_12" ),另一组带ENVAR( "DB2SOAP_VERSION=SOAP_12" )。

  3. 如果您想接收SOAP错误信息,请指定ENVAR选项RETURN_ERROR=YES。

    如果RETURN_ERROR=NO或未指定选项,且发生错误,则网络服务提供商将返回一个SOAP响应给客户端,并设置一个 HTTP 返回代码,且该代码不为200。 在这种情况下,用户定义的函数以 SQLCODE=-443 结尾,而网络服务提供商发送的完整 HTTP 响应则存储在WSERROR DD文件中,如WLM启动程序中所述。 该文件包含由网络服务提供商发送的实际字节。

    如果指定RETURN_ERROR=YES,当 HTTP 状态码不是200时,SOAPHTTP用户定义函数会将 HTTP 内容写入WSERROR DD文件。 它还创建了一个新的XML文档,其中包含一个错误元素节点,该节点在SOAP响应周围包含一个“httprc”属性,如下所示:
    <error httprc="{HTTP status code}">
          {SOAP response}
    </error>
    XML文档返回时不会显示SQLCODE -443。 您的应用程序必须检查根元素节点是否存在错误,以确定是否返回 HTTP 错误。 如果返回 HTTP 错误,应用程序必须处理SOAP响应以处理错误。
  4. 如果您不使用DSNWLM_WEBSERVICES核心WLM环境,请在WLM启动过程中添加以下DD卡,其中定义了用户定义的功能。
    // WSERROR DD PATH='<HFS filename>',
    // PATHOPTS=(ORDWR,OCREAT,OAPPEND),
    // PATHMODE=(SIRUSR,SIWUSR,SIRGRP,SIWGRP,SIROTH,SIWOTH)
    其中, <HFS文件名> 是HFS的名称,例如 /tmp/wsc.err。
    如果响应是Unicode格式,您可以在MVS系统上通过以下命令浏览文件:
    iconv -f UTF-8 -t IBM-1047 < tmp/wsc.err 
    您可以通过以下命令将内容保存到另一个文件中,从而将其存储为EBCDIC格式:
    iconv -f UTF-8 -t IBM-1047 < wsc.txt > wsc_ebcdic.txt 
    您也可以在二进制模式下将文件通过FTP传输到工作站,并使用文本编辑器打开。