题
如何在定义新的代理服务时从注册表中引用WSDL文件?我正在使用wso2 esb。
q1:我可以使用 localentry 元素来定义我的代理服务中的wsdl吗?例如:
localEntry key="my_wsdl" src="file:/wsdl/MyServiceSOAP.wsdl".
提供了先前使用的管理控制台> 添加集合>创建“wsdl”,添加资源> myservicesoap.wsdl。 我遇到了“src”值,两者都有问题
"/wsdl/MyServiceSOAP.wsdl"和
"wsdl/MyServiceSOAP.wsdl". 不工作。我按照文档但他们没有显示如何将WSDL上传到注册表中。
q2:如果myservicesoap.wsdl导入myservice.wsdl?我需要使用为myservice.wsdl添加添加资源,但我需要做任何其他事情来制作代理编译?
解决方案
我认为您在此引用注册表。每个产品中的注册表空间包含三个主要分区。
- 本地
- 配置
- 治理
配置注册表包含可以在同一产品的多个实例中共享产品特定配置(例如,ESB节点群集)。因此,您可以在Config Registry内创建WSDL集合,并指代..
"conf:/wsdl/MyServiceSOAP.wsdl"
.
通过将资源上载到注册表,您也可以在创建代理服务时轻松选择它们。
我认为只有在本地文件系统中名为“WSDL”的目录中,您只有在“文件:/WSDL/myserviceSoap.wsdl”中,您可以将资源称为“文件:/wsdl/myservicesoap.wsdl”。 btw,关于错误消息..如果查看ESB服务器日志,您将在尝试更新代理时,请参阅非现有文件的代理。
Caused by: java.io.FileNotFoundException: ./wsdl/MyServiceSOAP.wsdl (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:120)
at java.io.FileInputStream.<init>(FileInputStream.java:79)
at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70)
at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161)
at org.apache.synapse.config.SynapseConfigUtils.getObject(SynapseConfigUtils.java:197)
... 46 more
. 其他提示
我从博客找到了一个简单的解决方案: 在我的场景中,我有一个wsdl,导入另一个导入XSD的WSDL。实际结构在第二个WSDL中。
在原始wsdl中导入行:
<wsdl:import namespace="http://www.somedomain.com/interface/v1_0" location="service_interface_1_0.wsdl"/>
.
在第二个wsdl中导入行:
<xsd:import namespace="http://www.somedomain.com/data/v1_0" schemaLocation="data_types_1_0.xsd"/>
.
在代理上需要XML:
<publishWSDL key="file_required_service_1_0.wsdl">
<resource location="service_interface_1_0.wsdl"
key="file_service_interface_1_0.wsdl"/>
<resource location="data_types_1_0.xsd"
key="file_data_types_1_0.xsd"/>
.
在其中我有一个名为包含原始WSDL和XSD文件的本地条目的“file_required_service_1_0.wsdl”等的本地条目。
不隶属于 StackOverflow