启用网络服务用户定义功能后,您可以指定完整的SOAP消息作为输入,从而从网络服务提供商的响应中接收完整的SOAP消息。
准备工作
在完成这些步骤之前,请为 Web 服务用户定义函数设置 WLM 应用程序环境。
建议 :对于网络服务功能,请使用DSNWLM_WEBSERVICES核心WLM环境。
关于本任务
在安装或迁移期间,以下网络服务用户定义功能由作业 DSNTIJRT 安装:
- DSNWSCVV
- DSNWSCVC
- DSNWSCCV
- DSNWSCCC
过程
设置网络服务用户自定义功能:
- 从网络服务提供商读取数据的默认超时时间为两秒。 通过在ENVAR参数值中使用键值对DB2SOAP_TIMEOUT=X (其中X是一个以秒为单位的数字,用于指定超时值)重新定义Web服务用户定义的函数,从而增加超时值。
- 如果您想使用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" )。
- 如果您想接收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响应以处理错误。
- 如果您不使用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传输到工作站,并使用文本编辑器打开。