10

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

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

4

4 回答 4

6

我使用过UTL_HTTP简单且有效的方法。如果您在使用自己的包时遇到挑战,您可能会在网上围绕 UTL_HTTP 的众多包装器包之一中找到解决方案(谷歌“从 pl/sql 消费网络服务”,引导您访问例如 http://www. oracle-base.com/articles/9i/ConsumingWebServices9i.php

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

于 2008-09-15T23:38:17.513 回答
2

我遇到了这个挑战,找到并安装了 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 代码,请告诉我。

于 2009-01-24T17:05:17.363 回答
1

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

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

于 2008-09-02T17:01:01.420 回答
-2

看看这个较旧的帖子。我必须同意该帖子的#1答案;很难想象这可能是一个好的设计。

你不能编写一个服务或独立应用程序来与数据库中的表对话吗?然后,您可以在该表上实现任何您想要的触发器。

于 2008-09-02T16:26:37.103 回答