在后端具有 Oracle 11g 的 Java Web 应用程序中,我想在 Oracle 存储过程完成其工作后启动程序(可能是 servlet)的执行。
我的想法是让该过程在完成作业时将一条记录插入到数据库表中,并且表上的触发器集会启动此 Java 进程。
我怎样才能实现它?如果可以使用 Quartz Scheduler 来实现这一点,那么请提供如何实现它的指针。如果没有,我还有什么其他选择?
在后端具有 Oracle 11g 的 Java Web 应用程序中,我想在 Oracle 存储过程完成其工作后启动程序(可能是 servlet)的执行。
我的想法是让该过程在完成作业时将一条记录插入到数据库表中,并且表上的触发器集会启动此 Java 进程。
我怎样才能实现它?如果可以使用 Quartz Scheduler 来实现这一点,那么请提供如何实现它的指针。如果没有,我还有什么其他选择?
我过去曾使用 UTL_HTTP 向 servlet 发送请求。这具有简单的潜在好处,您可以轻松地在数据库中记录/使用响应消息。这将需要添加 ACL 规则:http ://www.oracle-base.com/articles/11g/fine-grained-access-to-network-services-11gr1.php
您还可以启动从 servlet 到数据库的连接,并在触发器中使用 DBMS_ALERT 信号:http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_alert.htm这具有潜在的好处它很快,并且不需要 ACL 规则。
最后,您可以使用触发器在某处插入一行/更新状态列,然后简单地让 servlet 轮询一段时间以查看它是否应该做任何工作。这是所有解决方案中最简单的,但实施起来并不优雅或有趣。