根据架构师的要求,我不允许将 java 类编译到我们正在运行的 Oracle 实例中,因此我正在寻找替代方案。要求是利用位于网络上的应用程序服务器上的 java 库。是否可以从 PL/SQL 调用位于另一台机器上的 java 方法?我发现这篇文章谈论的是 Oracle 中的外部过程,但我不确定它是否允许这样做。另一方面,性能还必须足够快,才能用于批处理数千或数百万个调用。
问问题
1095 次
2 回答
1
我怀疑您能做的最好的事情是将条目添加到您的 Java 进程轮询以获取每条或一批消息的另一个表中。Oracle 并不是真正为消息处理而设计的。
无论如何,我会和你的建筑师讨论这个问题,因为他是专家。;)
如果您的 Oracle 系统无法完成这项工作,您可能需要一个不使用 Oracle 的解决方案。
于 2012-08-29T14:58:32.857 回答
1
你有三个选择:
1.) 我们通过使用 UTL_HTTP 让 PL/SQL 调用 HTTP,然后让 app-server 调用 java 过程来解决类似的问题。我们这样做是为了将我们的 Oracle 数据库与 Oracle Reports 连接起来。PL/SQL 触发了一个 HTTP 请求,该请求由调用 Java 的应用服务器接收。Java 可以通过普通的 JDBC 回调 PL/SQL。
2.)您可能无法加载该 java proc,但也许您可以创建一些其他 java 存储过程,可以使用 RMI 调用它。
3.) AQ 是另一种方法。基本上,您可以使用 AQ 对消息进行排队,并在应用服务器上使用 JMS 将其出列并使用它。
选项 3 将是最快的,尽管我们已经尝试了选项 1,但它的延迟并没有你想象的那么多。它还提供了一种通过并行运行多个请求来进行一些并行处理的方法。
于 2012-08-29T17:09:33.770 回答