【发布时间】:2012-04-13 00:30:55
【问题描述】:
我有一个使用 JDBC 与 oracle 11.2 数据库服务器通信的 java 应用程序服务器。客户端的请求被发送到应用程序服务器,应用程序服务器运行一个调用数据库中的第一个存储过程的 java 方法。
我希望 java 方法在调用存储过程之后坐下来等待来自数据库的信号(该信号表明某些结果已准备好从数据库中检索)。
为避免轮询数据库,是否可以使用 DBMS_ALERT 通知 java 方法(或多个方法,因为可能运行多个实例,每个唯一用户一个实例)结果已准备好检索,在这种情况下,java 方法可以继续执行其余代码?
有人可以提供一个在这种情况下使用 DBMS_ALERT 的简单示例吗?也就是说,如何在数据库中对其进行配置,以便在表中的预定字段发生更改(例如更改为预定值,例如“完成”)时发送警报,以及如何配置 java 方法以便它可以接收警报消息(包括它如何处理此消息以检查其内容,例如if (received_message == 'done') 等)?
【问题讨论】:
-
您确定不想使用 QA(高级队列)吗?它是用于此目的的 Oracle 消息传递系统。它甚至还有一个 JMS 包装库。