1

我需要在 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 而不是肥皂、wsdl 或 tns。

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

谢谢

4

1 回答 1

4

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

假设我是一个客户,并且我特别喜欢将我的公司名称用于 WSDL 模式中的组件。只要我在 my 中声明“ http://schemas.xmlsoap.org/wsdl/ ”模式映射到什么xmlns,服务器就会适当地读取和解释它:

<wsdl:definitions targetNamespace="http://my-awesome-company.com/SomeWebService" xmlns:whateverYouWantHere="http://schemas.xmlsoap.org/wsdl/" ...

我可以在模式中为 wsdl 类型指定标签,如下所示:

<whateverYouWantHere:message>...</
<whateverYouWantHere:portType>....

等等等等。

OSB 在提供代理时会这样做,因为它不仅是您的服务的代理,还可能是成百上千的其他服务的代理。如果您要编写一个 Web 服务,该服务正在使用一些巧合地映射到它们自己的类型之一的 Web 服务,例如重新映射一个或多个类型,将会出现xmlns严重命名message空间input冲突output

于 2014-04-10T13:43:22.297 回答