我们正在将 wso2esb 服务器放在我们的 web 服务和客户之间。我在导入和包含在 wsdl 文件中时遇到问题。
为了使迁移简单,我们认为我们应该将所有 wsdl 和 xsd 文件复制到 esb 服务器上的一个目录中(但在 wso2esb 软件之外)。在 esb 中创建服务时,我现在使用“指定源 WSDL”来引用 wsdl 文件。
这确实显示了一个 wsdl,但不是(完全)我们创建的那个。所以我们使用'useOriginalwsdl=true'、'modifyUserWSDLPortAddress=true'、'showAbsoluteSchemaURL=true'。
在我们的一个 wsdl 中,我们得到了这段代码:
<xs:schema targetNamespace="http: //www.egem.nl/StUF/wsdl/zkn0201.wsdl">
<xs:import schemaLocation="xsd/stuf0204.xsd" namespace="http://www.egem.nl/StUF/StUF0204"/>
<xs:import schemaLocation="xsd/zkn0201.msg.xsd" namespace="http://www.egem.nl/StUF/sector/zkn/0201"/>
</xs:schema>
设置了上述参数后,这在服务的 wsdl 中显示为:
<xs:schema targetNamespace="http://www.egem.nl/StUF/wsdl/zkn0201.wsdl">
<xs:import namespace="http://www.egem.nl/StUF/StUF0204" schemaLocation="HAEM_TEST?xsd=xsd/stuf0204.xsd"/>
<xs:import namespace="http://www.egem.nl/StUF/sector/zkn/0201" schemaLocation="HAEM_TEST?xsd=xsd/zkn0201.msg.xsd"/>
</xs:schema>
但是当我使用“http:// ...../sevices/HAEM_TEST?xsd=xsd/zkn0201.msg.xsd”查询wsdl时,它不会返回xsd的内容。即使 xsd 相对于服务使用的实际 wsdl 存在于磁盘上:
在磁盘上:
$ ls -lR /some/path/to/my/resource
.:
drwx------. 2 wnproesb01 wnproesb01 4096 Apr 17 23:15 xsd
-rwx------. 1 wnproesb01 wnproesb01 9498 Apr 16 18:31 zkn0201.wsdl
./xsd:
-rwx------. 1 wnproesb01 wnproesb01 13885 Apr 16 18:31 stuf0204.xsd
-rwx------. 1 wnproesb01 wnproesb01 63982 Apr 16 18:31 zkn0201.msg.xsd
这些 xsd 文件可能具有导入或包含自身,由与它们自身相比的相对路径给出。
最大的问题:我需要做什么,才能使这个 wsdl 成为 wso2esb 提供的有效、有效的 wsdl?包括所有包含/导入的 xsd。