1

在后端具有 Oracle 11g 的 Java Web 应用程序中,我想在 Oracle 存储过程完成其工作后启动程序(可能是 servlet)的执行。

我的想法是让该过程在完成作业时将一条记录插入到数据库表中,并且表上的触发器集会启动此 Java 进程。

我怎样才能实现它?如果可以使用 Quartz Scheduler 来实现这一点,那么请提供如何实现它的指针。如果没有,我还有什么其他选择?

4

2 回答 2

1

您可以使用作为 Oracle 一部分的 UTL_HTTP 从 Oracle 存储过程中向 Servlet URL 发送 POST 调用。在此处查找更多信息

或者您可以摆脱 Servlet 并编写一个 Java 存储过程,可以将其作为存储过程导入 Oracle 并调用它。在此处查找更多信息

于 2013-02-20T08:28:05.953 回答
1

我过去曾使用 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 轮询一段时间以查看它是否应该做任何工作。这是所有解决方案中最简单的,但实施起来并不优雅或有趣。

于 2013-02-20T08:30:40.493 回答