作为 Web 服务的提供者,我想将相关 Web 请求中的 ID 字段的值强制限制为预期的位数,但根据 CICS,我似乎无法使用模式方面用于此目的的 xsd/schema 中的元素。此外,AFAIK 长度方面元素不支持仅将字符限制为数字。
我已经为我的同事(CICS 用户)提供了一个 WSDL 文件和一个单独但包含的用于 Web 服务的 xsd 文件,显然 CICS Web Services Assistant 中的 DFHWS2LS 工具无法识别 xsd 文件中包含的模式构面元素。
(我知道以下内容 - 我的同事已经单独确认 - 从我的 Web 服务代码中添加的日志打印出来 - 尽管 SOAP 请求的全文目前不可用,因为我在我的 tomcat 中关闭了 HTTP 转储设置启动脚本以避免淹没日志文件。)
结果,我的同事生成的 Web 客户端(可能是 COBOL - 不确定)向我的 Web 服务发送了一个请求,该请求的 ID 字段值为 255 个字符(默认长度)字符串,其中包含预期的位数 - 但后跟填充空白 - 用于 ID 字段。
这是一个包含模式/xsd 的示例 - 例如 ID 长度为 16...
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" targetNamespace="snip1" xmlns:tns="snip2" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="myUpdateStatus" type="tns:myUpdateStatus"/>
<xs:element name="myUpdateStatusResponse" type="tns:myUpdateStatusResponse"/>
<xs:complexType name="myUpdateStatus">
<xs:sequence>
<xs:element name="ssn">
<xs:simpleType>
<xs:restriction base='xs:string'>
<!-- DFHWS2LS ignores the following pattern facet-->
<xs:pattern value='[0-9]{16}'/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="updatedStatus">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="myUpdateStatusResponse">
<xs:sequence>
<xs:element name="return" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
仅供参考,我不是 CICS 用户;因此我没有供应商支持合同。另外,我还没有询问我同事的供应商支持是否有解决办法。