如今,我们的应用程序正在与许多 Web 服务进行交互。我们有自己的包,几年前有人使用 UTL_HTTP 编写了它,它通常可以工作,但需要对 SOAP 信封进行一些硬编码才能与某些系统一起工作。我想让它更通用,但缺乏经验来知道我必须处理多少场景。不同之处在于需要声明哪些名称空间以及元素的格式。我们必须处理带有几个参数的简单调用以及以编码字符串传递大量数据的调用。

我知道 10g 有 UTL_DBWS,但是网上没有大量的用例。它是否足够稳定和灵活以供一般使用? 文档

有帮助吗?

解决方案

我用过 UTL_HTTP 这很简单并且有效。如果您在自己的包中遇到挑战,您可能可以在网上围绕 UTL_HTTP 的众多包装器包之一中找到解决方案(Google“使用 pl/sql 中的 Web 服务”,例如http://www.oracle-base.com/articles/9i/ConsumingWebServices9i.php)

没人使用的原因 UTL_DBWS 是它在默认安装的数据库中不起作用。您需要将大量 Java 类加载到数据库中,但标准指令似乎有缺陷 - 该过程会左右喷出 Java 错误并最终失败。似乎很少有人愿意花时间追踪包依赖关系以使这种方法发挥作用。

其他提示

我遇到了这个挑战,找到并安装了 Sten 在 Oracle-Base 上建议的“SOAP API”包。它在 UTL_HTTP 之上提供了一些良好的信封创建功能。

但是,您的问题存在一些限制。SOAP_API 假设所有请求都是简单的 XML,即只有一层标签层次结构。

我扩展了 SOAP_API 包,以允许客户端代码任意插入额外的标记。因此,您可以插入一个子级别,例如 ,继续构建请求,并记住插入结束标记。

命名空间问题是该项目的一个难题——不同级别的 XML 有不同的命名空间。

我使用的一个很好的调试工具是来自 Pocket Soap 的 TCP Trace。www.pocketsoap.com/tcptrace/您将其设置为代理,并观看客户端和服务器代码之间的HTTP请求和响应对象。

话虽如此,我们真的很喜欢在数据库中拥有 SOAP 客户端 - 我们可以完全访问所有数据和现有 PLSQL 代码,可以轻松循环游标并在需要时通过 SOAP 调用外部应用程序。这比部署具有大量自定义 Java 或 .NET 代码的中间层更快、更容易。祝您好运,如果您想查看我的增强型 SOAP API 代码,请告诉我。

我们还以类似于您所描述的方式使用 UTL_HTTP。我对 UTL_DBWS 没有任何直接的经验,所以我希望您能够跟进您收集到的任何信息/经验。

@kogus,不,对于许多应用程序来说,这是一个非常好的设计。PL/SQL 是一种成熟的编程语言,已用于许多大型应用程序。

看看这个 较旧的帖子. 。我必须同意该帖子的第一条答案;很难想象这会是一个好的设计。

您不能编写一个服务或独立应用程序来与数据库中的表进行通信吗?然后您可以在该表上实现您想要的任何内容作为触发器。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top