我在端点上创建了传递代理服务,并在发布wsdl选项中选择了指定源URL 。端点引用wsdl定义中的xsd。代理Web服务产生了罚款,但是当尝试从客户端(SOAP UI)加载此Web服务时,由于代理服务wsdl URL中引用xsd的方式,它会引发错误。
具有xsd定义的实际Web服务示例
<types>
<xsd:schema>
<xsd:import namespace="http://service.example.com/" schemaLocation="http://172.16.91.82:7001/DemoService/DemoService?xsd=1"/>
</xsd:schema>
</types>
代理服务的示例,其中包含对架构的引用。
<wsdl:types>
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="unqualified">
<xsd:import namespace="http://service.example.com/" schemaLocation="SecuredServiceProxy?xsd=http://172.16.91.82:7001/DemoService/DemoService?xsd=1"/>
</xsd:schema>
</wsdl:types>
客户端在加载架构位置时遇到问题(当然看起来无效)
1)我正在寻找摆脱这种方法的方法。
2)此代理服务旨在隐藏最终用户的实际服务。代理服务wsdl定义中列出xsd架构的方式是将实际端点信息泄露给最终用户。有没有办法避免生成的代理服务的wsdl定义中显示的xsd url?
感谢。
答案 0 :(得分:2)
所以你的意思是说你的端点是URL,你的发布wsdl也是url?您可以尝试将发布wsdl指定为内联,并且可以在ESB_Home中创建一个.xsd文件,该文件应包含xsd URL的内容。然后,您可以通过将url中的位置更改为内联wsdl中ESB_Home目录中存在的xsd文件的名称来引用.xsd文件:
<wsdl:types>
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="unqualified">
<xsd:import namespace="http://service.example.com/" schemaLocation="DemoService.xsd"/>
</xsd:schema>
</wsdl:types>
希望这适合你
答案 1 :(得分:0)
如果您需要隐藏最终用户的实际服务详细信息,则可以避免在WSO2 ESB中发布WSDL。
然后,您将调用ESB中定义的代理服务。
我希望这会有所帮助。
谢谢!