2008-09-01 80 views
9

我们的应用程序现在与许多Web服务接口。我们有我们自己的软件包,有人使用UTL_HTTP写了几年,它通常可以工作,但需要对SOAP封套进行一些硬编码才能与某些系统一起工作。我想使它更通用,但缺乏经验知道我将不得不处理多少场景。变体是需要声明哪些名称空间以及元素的格式。我们必须处理包含少量参数的简单调用和那些以编码字符串传递大量数据的调用。从Oracle PL/SQL中消费Web服务

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

回答

5

我已经使用了UTL_HTTP这是简单和工作。如果你面对自己的包是一个挑战,你也许可以找到周围UTL_HTTP许多包装包中的一个在网络上的解决方案(谷歌“消费从PL/SQL Web服务”,导致你,例如 http://www.oracle-base.com/articles/9i/ConsumingWebServices9i.php

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

-2

看看这个older post。我必须同意那篇文章的#1答案;很难想象这可能是一个好设计的场景。

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

+0

#1的答案是在dotNet中做到这一点的说明。没有真正相关。你的意思是8月29日的Orion Edwards评论?请记住,答案可能会随着人的排名而上下移动。 – 2009-01-25 22:58:35

1

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

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

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代码。