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

标签 web-services wsdl asmx osb oracle-service-bus

我需要在 OSB 中虚拟化一个 Web 服务,但最终的 wsdl 与业务服务相同(它是一个 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。

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

谢谢

最佳答案

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

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

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

我可以在 wsdl 类型的架构中指定标签,如下所示:

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

等等等等

OSB 在提供代理时会执行此操作,因为它不仅是您的服务的代理,而且可能是数百或数千个其他服务的代理。如果您要编写一个使用某些定义的 xmlns 的 Web 服务,而这些 碰巧 被映射到它们自己的类型之一,例如重新映射消息类型,或输入输出类型。

关于web-services - 导出到 OSB 后代理服务器中的 WL5G3N0 表示法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22972528/

相关文章:

java - 在 AppEngine 中从 Servlet 调用 Web 服务

web-services - Grails CXF Web服务,包括WSDL中的所有方法

web-services - 使用 SOAPUI 连接 Web 服务时出错

c# - 从 wsdl 文件模拟 Web 服务

c# - 如何创建一个 web.config 文件来加载 SoapExtension?

c# - 从 ASMX WebService 中删除空命名空间

c# - IIS/.NET 3.5 的 X-Sendfile 或 X-Accel-Redirect 等效项

web-services - 负载均衡器粘性 session 和非常旧的网络服务

java - Dropwizard for Hibernate 中的 SQLite 方言

javax.xml.bind.UnmarshalException : unexpected element (uri: "",本地:"soap:Envelope")