WSO2 - 从注册表设置PublishWSDL URI

时间:2014-12-10 15:47:47

标签: wsdl wso2 wso2esb wso2carbon

我在WSO2中有以下传递代理:

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" name="MyServiceName_V2" transports="https http" startOnLoad="true" trace="disable">
<target>
    <inSequence>
        <log level="full">
            <property name="state" value="before"/>
        </log>
        <send>
            <endpoint key="gov:path.to.the.endpoint.in.the.registry"/>
        </send>
    </inSequence>
    <outSequence>
        <send/>
    </outSequence>
    <faultSequence/>
</target>
<publishWSDL uri="http://localhost:myservice.svc?singleWsdl"></publishWSDL>
<parameter name="useOriginalwsdl">true</parameter>

该服务的端点位于注册表中,因此我可以将此代理部署到任意数量的WSO2服务器(开发,测试,qa,...),端点网址将指向正确的服务器/网址每个环境。

但是publishWSDL uri目前是硬编码的:它直接指向一个固定的uri(目前在我的开发机器上)。我希望通过指向注册表中某些值的内容来替换它,就像实际端点的uri一样。

我尝试添加wsdl端点,但这不起作用,因为我认为wsdl端点不仅仅是wsdl,而是基于wsdl的完整端点。

我在想我应该用注册表中的一些文本内容替换publishWsdl uri,但我不知道如何首先在注册表中获取文本内容(在Eclipse中的WSO2开发工作室项目中),以及然后,如何将该值从注册表中获取到publishWsdl元素的uri属性。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您可以使用WSO2 Registry存储WSDL文件,也可以在WSO2 ESB Proxy中引用。

Ex: <publishWSDL key="conf:wsdls/MyService.wsdl"/>

使用wso2 develop studio在WSO2 Registry中存储WSDL资源文件。

  • 打开WSO2注册表视角
  • 添加注册表实例
  • 添加集合(给定示例中的wsdls目录) -
  • 添加资源(给定示例中的MyService.wsdl)。资源可以    使用以下方法创建
    • 从文件上传内容(来自光盘的WSDL文件)
    • 创建自定义内容(您可以在内容列中复制粘贴或写入新的WSDL文件)
    • 从URL导入内容(您可以提供您的WSDL URL      已部署的服务)

参考:https://docs.wso2.com/display/DVS370/Managing+the+Registry

使用wso2开发者工作室

从Registry中引用WSDL
  1. 打开WSO2 ESB图形视角
  2. 选择“创建新的代理服务”,然后单击“下一步”
  3. 键入代理服务的唯一名称,然后选择代理服务
  4. 键入自定义代理并单击“完成”
  5. 右键单击新创建的代理设计,然后选择“显示属性视图”。 在此代理服务的属性视图中,您可以找到多个 部分
    • 基本
    • 端点
    • 故障序列
    • 按顺序
    • Out Sequence
    • 参数
    • 政策
    • 的Qos
    • WSDL
  6. 向下滚动到WSDL部分,选择Wsdl Type作为REGISTRY_KEY(默认值为NONE)
  7. 点击显示椭圆按钮的/ default /键值,点击eclipse按钮从注册表中选择Wsdl Key。
  8. 从弹出窗口中选择注册表链接,该链接将您带到注册表浏览器
  9. 点击绿色+按钮创建注册表创建。
  10. 导航到wsdl资源,然后单击“确定”。
  11. REF:https://docs.wso2.com/display/DVS370/Creating+ESB+Artifacts#CreatingESBArtifacts-Creatinganewproxyservic

答案 1 :(得分:1)

我最终做的是删除'useOriginalwsdl&#39;设置。

需要该设置,因为我们已经用自己的名称替换了端点的每个ESB服务器,而我们希望该端点是负载均衡器的地址。所以我们在WSDL中将端点设置为该地址,并设置&#39; useOriginalwsdl&#39;为真。

但设置&#39; WSDLEPRPrefix&#39;会更好。在axis2.xml中的参数,所以当我找到设置时,这就是我们所做的。

相关问题