导出到 OSB 后代理服务器中的 WL5G3N0 表示法

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。

那么有人知道我该如何解决这个问题吗?

谢谢

Nic*_*uer 5

您注意到行为有什么不同吗?名称空间是您的示例中唯一要更改的内容,任何客户端和服务都可以更改或以不同方式调用这些内容。

假设我是一名客户,并且我特别喜欢在 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