我在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属性。
有什么想法吗?
答案 0 :(得分:3)
您可以使用WSO2 Registry存储WSDL文件,也可以在WSO2 ESB Proxy中引用。
Ex: <publishWSDL key="conf:wsdls/MyService.wsdl"/>
使用wso2 develop studio在WSO2 Registry中存储WSDL资源文件。
参考:https://docs.wso2.com/display/DVS370/Managing+the+Registry
使用wso2开发者工作室
从Registry中引用WSDL答案 1 :(得分:1)
我最终做的是删除'useOriginalwsdl&#39;设置。
需要该设置,因为我们已经用自己的名称替换了端点的每个ESB服务器,而我们希望该端点是负载均衡器的地址。所以我们在WSDL中将端点设置为该地址,并设置&#39; useOriginalwsdl&#39;为真。
但设置&#39; WSDLEPRPrefix&#39;会更好。在axis2.xml中的参数,所以当我找到设置时,这就是我们所做的。