从Oracle PL/SQL使用web服务
现在,我们的应用程序正在与许多web服务交互。我们有自己的包,几年前有人使用UTL_HTTP编写了这个包,它通常可以工作,但需要一些SOAP信封的硬编码才能与某些系统一起工作。我想让它更通用,但缺乏经验,无法知道我需要处理多少场景。不同之处在于需要声明哪些名称空间以及元素的格式。我们必须处理带有几个参数的简单调用和以编码字符串形式传递大量数据的调用 我知道10g有UTL_DBWS,但在线使用的用例并不多。它是否足够稳定和灵活,适合一般使用 看看这个。我必须同意那篇文章的#1回答;很难想象这是一个好的设计从Oracle PL/SQL使用web服务,sql,oracle,web-services,plsql,Sql,Oracle,Web Services,Plsql,现在,我们的应用程序正在与许多web服务交互。我们有自己的包,几年前有人使用UTL_HTTP编写了这个包,它通常可以工作,但需要一些SOAP信封的硬编码才能与某些系统一起工作。我想让它更通用,但缺乏经验,无法知道我需要处理多少场景。不同之处在于需要声明哪些名称空间以及元素的格式。我们必须处理带有几个参数的简单调用和以编码字符串形式传递大量数据的调用 我知道10g有UTL_DBWS,但在线使用的用例并不多。它是否足够稳定和灵活,适合一般使用 看看这个。我必须同意那篇文章的#1回答;很难想象这是一个
您不能编写一个服务或独立应用程序,它将与数据库中的表通信吗?然后,您可以在该表上实现任何您想要的触发器。我们还以类似于您所描述的方式使用UTL_HTTP。我对UTL_DBWS没有任何直接的经验,因此我希望您可以跟进您可以收集的任何信息/经验
@kogus,不,对于许多应用来说,这是一个非常好的设计。PL/SQL是一种成熟的编程语言,已用于许多大型应用程序。我使用了
UTL\U HTTP
,它简单有效。如果您在使用自己的包时面临挑战,您可能会在网上UTL_HTTP的众多包装包中找到一个解决方案(Google“从pl/sql消费web服务”,引导您使用例如。
)
没有人使用
UTL\u DBWS
的原因是它在默认安装的数据库中不起作用。您需要将大量Java类加载到数据库中,但标准指令似乎有缺陷——该过程会左右抛出Java错误,最终失败。似乎很少有人愿意花时间追踪软件包依赖关系,以使这种方法发挥作用。我遇到了这个挑战,找到并安装了Sten在Oracle Base上建议的“SOAP API”软件包。它在UTL_HTTP之上提供了一些很好的信封创建功能
然而,你的问题有一些局限性。SOAP_API假定所有请求都是简单的XML,即只有一层标记层次结构
我扩展了SOAP_API包,允许客户端代码任意插入额外的标记。因此,您可以插入子级别,例如,继续构建请求,并记住插入结束标记
名称空间问题是该项目的一个难题——不同级别的XML具有不同的名称空间
我使用的一个很好的调试工具是Pocket Soap中的TCP跟踪。
www.pocketsoap.com/tcptrace/
将其设置为代理,并观察客户端和服务器代码之间的HTTP请求和响应对象
说到这里,我们真的很喜欢在数据库中有一个SOAP客户端——我们可以完全访问所有数据和现有的PLSQL代码,可以轻松地通过游标循环,并在需要时通过SOAP调用外部应用程序。这比部署带有大量自定义Java或.NET代码的中间层快得多,也容易得多。祝您好运,如果您想查看我的增强型SOAP API代码,请告诉我。1答案是在dotNet中执行此操作的说明。不太相关。你是说8月29日的猎户座爱德华兹评论吗?请记住,答案可能会随着人们的排名而上移/下移。