Ale*_*lex 2 wsdl web-services asmx oracle-service-bus osb
我需要在 OSB 中虚拟化一个 Web 服务,但最终的 wsdl 与业务服务相同(它是一个 asxm,所有内容都只在一个文件中),这是可以的,但是导出 wsdl 后有不同的表示法,请参阅下面的例子:
预期和原始
<wsdl:output>
<soap:body use="literal" />
<soap:header message="tns:GetPPDeluxeSubscriberInformationVersionInfoHeader" part="VersionInfoHeader" use="literal" />
</wsdl:output>
Run Code Online (Sandbox Code Playgroud)
我得到的:
<WL5G3N0:output>
<WL5G3N2:header message="WL5G3N1:GetPPDeluxeSubscriberInformationVersionInfoHeader" part="VersionInfoHeader" use="literal"/>
<WL5G3N2:body use="literal"/>
</WL5G3N0:output>
Run Code Online (Sandbox Code Playgroud)
我得到的符号是 WL5G3N0 或 WL5GN1,而不是肥皂、wsdl 或 tns。
那么有人知道我该如何解决这个问题吗?
谢谢
您注意到行为有什么不同吗?名称空间是您的示例中唯一要更改的内容,任何客户端和服务都可以更改或以不同方式调用这些内容。
假设我是一名客户,并且我特别喜欢在 WSDL 模式中使用我的公司名称作为组件。只要我在 my 中声明“ http://schemas.xmlsoap.org/wsdl/xmlns ”模式映射到的内容,服务器就会适当地读取和解释它:
<wsdl:definitions targetNamespace="http://my-awesome-company.com/SomeWebService" xmlns:whateverYouWantHere="http://schemas.xmlsoap.org/wsdl/" ...
Run Code Online (Sandbox Code Playgroud)
我可以在 wsdl 类型的架构中指定标签,如下所示:
<whateverYouWantHere:message>...</
<whateverYouWantHere:portType>....
Run Code Online (Sandbox Code Playgroud)
等等等等
OSB 在提供代理时会这样做,因为它不仅是您的服务的代理,而且可能是数百或数千个其他服务的代理。xmlns如果您要编写一个 Web 服务,该服务使用的某些定义恰好映射到它们自己的类型之一,例如一个或多个类型的重新映射,message则会input出现严重的命名空间冲突output。