3

我需要实现以下内容:

有一个表 A 应该被来自另一个表 B 上的触发器的 DML 操作更改。

我想在每次触发器工作时通知 Jboss bean。在最好的情况下,我希望有机会查看 bean 中的旧数据和新数据。

最好的方法是什么?你能推荐任何阅读的材料吗?

4

2 回答 2

5

Alex 提出的使用数据库更改通知的建议可能是最好的方法。以下是一些其他选项,用于从 Oracle PL/SQL 包(您可以从触发器调用)向 Java 进程发送事件信号:

  • 使用DBMS_PIPE将消息异步发送到在同一管道上侦听的 Java 客户端。
  • 使用DBMS_ALERT向侦听目标警报的 Java 客户端发送消息。在事务提交之前不会收到消息。
  • 使用UTL_HTTPUTL_SMTPUTL_TCP将消息发送到侦听目标 HTTP、SMTP 或 TCP 端点的 Java 进程。
  • 向侦听目标队列/主题的 Java 客户端发送Oracle/AQ JMS消息。
  • 在 Java 中创建一个 JMS 客户端并将 Java 类 [和依赖项] 加载到 Oracle 数据库中。将该类包装在一个 PL/SQL 过程中,并调用它以向 Java 客户端发出信号,该客户端正在侦听目标队列/主题。

在问题Calling/Using JMS from PL/SQL中有更多关于从 PL/SQL 发送 JMS 消息的信息。

于 2012-06-16T15:11:41.607 回答
0

您可以让触发器在信号表中插入一行。

然后,JBoss 进程可以监视信号表,定期检查新信号。

于 2012-06-16T09:54:16.990 回答