在引用了XSD的端点上创建wso2 esb代理服务

时间:2013-06-27 08:55:14

标签: wso2 wso2esb

我在端点上创建了传递代理服务,并在发布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?

感谢。

2 个答案:

答案 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中定义的代理服务。

我希望这会有所帮助。

谢谢!