我们正在将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。
答案 0 :(得分:0)
您可以使用Registry存储WSDL,然后从那里进行引用。这比存储在文件系统中要方便得多。
http://madhukaudantha.blogspot.nl/2012/07/wso2-esb-proxy-from-registry.html
并且还要参考如何正确定义WSDL导入的模式位置。
WSO2 ESB 4.5.0 fails to create proxy service from governance registry