【问题标题】:How to prevent service on Oracle Service Bus (OSB) from changing xmlns prefix/aliases to random things?如何防止 Oracle Service Bus (OSB) 上的服务将 xmlns 前缀/别名更改为随机事物?
【发布时间】:2015-04-22 18:44:42
【问题描述】:

我们需要向客户端发送特定的命名空间别名,并且必须使用 OSB。代理服务更改了我们精心设计的公开 WSDL 的名称空间别名。我找不到阻止 OSB 这样做的选项。

例如

对于命名空间http://schemas.xmlsoap.org/wsdl/,原来的wsdl start有

    <soap:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/"/>

但是 OSB 像这样公开 WSDL

    <WL5G3N0:definitions xmlns:WL5G3N0="http://schemas.xmlsoap.org/wsdl/"/>

原始别名“soap”被 OSB 自动更改为“WL5G3N0”并导致问题。许多引用的 XSD 文件也发生了相同类型的重命名。

我们如何防止在 OSB 中重命名别名?

【问题讨论】:

  • 前缀在 XML 中没有任何意义,它们不会改变元素名称的语义,只要命名空间 URI 相同。为什么这会导致问题?如果是这样,您可能应该更改您的 XML 应用程序。
  • 这个要求不是为了确认WSDL/SOAP/WSDL/XSD标准。此要求来自客户。我的问题是“可以关闭此功能吗?”和“如何关闭它(如果可能的话)”
  • 我同意@MathiasMüller。听起来您的客户端所做的不是解析 XML,而是对某些内容进行字符串比较,当架构的前缀发生更改时(根据 XML 标准允许),他们无法处理。
  • 我并不是说 OSB 的行为有问题。我只是想弄清楚它是否可以关闭。可以关闭吗?还是 OSB 不允许我们关闭它?

标签: xsd wsdl osb


【解决方案1】:

我从 Oracle 社区论坛得到了答复,我将关闭此。似乎对 OSB 很了解的人说,他没有办法关闭自动重命名。

答案似乎是“不,您不能关闭 OSB 中 xmlns 前缀的自动重命名”

【讨论】:

【解决方案2】:

Support.oracle.com 回复了我的 SR 3-10633538571,他们正式确认在 OSB 11g 中无法禁用前缀的自动重命名。

【讨论】:

    【解决方案3】:

    Service Bus 获取您的 WSDL(称为资源 WSDL)并通过替换原始 WSDL 的端口、服务和其他部分,从中创建一个有效的 WSDL。

    命名空间前缀的重命名是这种转换的一部分。您无法避免创建有效的 WSDL。转换不会保留您的前缀,这意味着您必须忍受它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      • 1970-01-01
      • 2016-06-17
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      相关资源
      最近更新 更多