使用 Oracle 10 中具有复杂类型的 SOAP Web 服务 WSDL

Posted

技术标签:

【中文标题】使用 Oracle 10 中具有复杂类型的 SOAP Web 服务 WSDL【英文标题】:Consume a SOAP web service WSDL with complex types from Oracle 10 【发布时间】:2011-10-21 16:51:51 【问题描述】:

跟进this 早在 2008 年 9 月关于“使用 Oracle PL/SQL 的 Web 服务”的帖子,我想知道是否有任何新信息?我还在 oracle.com 上找到了question,基本上问了同样的问题,但没有任何直接的答案。

我正在尝试从 Oracle PL/SQL 函数/存储过程中使用服务。该服务包含一个带有 6 个参数的方法,其中 5 个是自定义类型。例如,我能找到的所有 SOAP_API 示例都假定为简单类型的 int 或 string。

我们目前没有用于使用来自 Oracle 的 SOAP Web 服务的内部 ESB,因此我们不具备处理 XML 复杂类型的能力。我将 SOAP_API 用于简单类型(例如 here 和 here),但是一旦我们进入更复杂的类型,我们真的没有简单的选择吗?如果我认为它会起作用,我会花一些时间来解构 WSDL 并手动创建类型,但是当我不相信它无论如何都会起作用时,我会怀疑并犹豫是否要花几个小时来做​​这件事。也许SOAP_API 太有限了?除了 SOAP_API 和 UTL_DBWS 之外,是否还有其他选择,这似乎也非常复杂并受到类似限制?

感谢您的指导!

【问题讨论】:

甲骨文。但是,如果您指的是服务所用的语言,我不确定。在我看来,所有 WSDL 都一样。 我的意思是您将使用哪种语言使用该服务? @JohnSaunders:来自问题:“我正在尝试从 Oracle PL/SQL 函数/存储过程中使用服务。 【参考方案1】:

@McArthey,我没有任何运气让 utl_dbws 工作。当我最初开始使用soap_API时,我发现通过简单地使用utl_http并编写我自己的包来完成工作会更容易。

我可以证明可以使用复杂类型,我在开始时广泛使用了这个link。

作为最坏的情况,您可以按照文章中列出的方式进行操作,然后按照自己的方式进行操作——作为概念证明(例如手动编写 soap 调用代码:

<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Body>
    <GetCityForecastByZIP xmlns="http://ws.cdyne.com/WeatherWS/">
      <ZIP>' || l_zip || '</ZIP>
    </GetCityForecastByZIP>
  </soap12:Body>
</soap12:Envelope>';

【讨论】:

快速浏览您提供的链接看起来很有希望,但我仍然看到很多 xsd:string 类型。就我而言,我有type="MapDescription"之类的东西。不过,我会浏览链接,看看我能找到什么。谢谢(你的)信息。我以为我已经走到了互联网的尽头,但我很高兴这是我还没有看到的东西。

以上是关于使用 Oracle 10 中具有复杂类型的 SOAP Web 服务 WSDL的主要内容,如果未能解决你的问题,请参考以下文章

Oracle SOA套件12c

oracle如何导出具有clob字段类型的sql?

Oracle - 如何使用 varchar 类型创建自动增量列?

SOA 与 MVC - 何时使用

[SOA]REST与SOA两种架构的异同比较

jdeveloper 12c中缺少SOA和OSB Tier可以帮助我添加这些吗?