从文件导入XSD

时间:2013-04-25 08:44:42

标签: wso2esb

我们正在将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。

1 个答案:

答案 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