在后端有 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 轮询一段时间,看看它是否应该执行任何操作。这是所有解决方案中最简单的,但实现起来并不那么优雅或那么有趣。
关于java - 从 Oracle 触发器启动 Java Web 应用程序中的流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14974292/