1

定义新代理服务时如何从注册表中引用 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 使用Add Resource,但我还需要做任何其他事情来使代理编译吗?

4

2 回答 2

4

我认为您在这里指的是注册表。每个产品中的注册表空间包含三个主要分区。

  • 当地的
  • 配置
  • 治理

ESB 中的注册表空间 配置注册表包含可以在同一产品的多个实例(例如 ESB 节点集群)之间共享的产品特定配置。因此,您可以在 Config 注册表中创建 WSDL 集合并像这样引用它。

"conf:/wsdl/MyServiceSOAP.wsdl"

通过将资源上传到 Registry,您也可以在创建代理服务时轻松选择它们。 在此处输入图像描述

我认为只有当资源位于本地文件系统中名为“wsdl”的目录中时,您才能将资源称为“file:/wsdl/MyServiceSOAP.wsdl”。顺便说一句,关于错误消息。如果您查看 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
于 2012-03-15T10:20:35.490 回答
2

我从博客中找到了一个简单的解决方案:在我的场景中,我有一个 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"/>

我有“file_required_service_1_0.wsdl”等的本地条目,命名为包含原始 wsdl 和 xsd 文件的本地条目。

于 2015-08-25T11:24:13.207 回答