我需要在OSB中虚拟化一个Web服务,但最终的wsdl与Business服务相同(它是一个asxm,一切只在一个文件中),这没关系,但是在导出后wsdl有一个不同的符号,请参阅以下示例:
期待和原创
<wsdl:output>
<soap:body use="literal" />
<soap:header message="tns:GetPPDeluxeSubscriberInformationVersionInfoHeader" part="VersionInfoHeader" use="literal" />
</wsdl:output>
我得到的那个:
<WL5G3N0:output>
<WL5G3N2:header message="WL5G3N1:GetPPDeluxeSubscriberInformationVersionInfoHeader" part="VersionInfoHeader" use="literal"/>
<WL5G3N2:body use="literal"/>
</WL5G3N0:output>
我得到这个符号WL5G3N0或WL5GN1而不是soap,wsdl或tns .
所以任何人都知道如何解决这个问题?
谢谢
1 回答
你注意到行为有什么不同吗? namespcaes是您示例中唯一被更改的内容,任何客户端和服务都可以更改或调用它们 .
假设我是一个客户端,我特别喜欢在WSDL架构中使用我公司名称的组件 . 只要我在
xmlns
中声明“http://schemas.xmlsoap.org/wsdl/”架构映射到什么内容,服务器就会正确读取和解释它:我可以在模式中为wsdl类型指定标签,如下所示:
等等
OSB在提供代理时会这样做,因为它不仅是您的服务的代理,而且可能是数百或数千个其他服务的代理 . 如果您要编写一个使用某些已定义的
xmlns
的Web服务,那么会发生严重的命名空间冲突,这些事件巧合地被映射到它们自己的类型之一,例如重新映射message
类型,或input
或output
类型 .