我们有一个Web应用程序,它通过在Jersey / Tomcat / Apache / PostgreSQL上运行的RESTful Web服务接收传入数据 . 与此Web服务应用程序分开,我们需要执行许多重复和计划任务 . 例如,以不同的时间间隔清除不同类型的数据,在不同的时间表上从外部系统提取数据,并在指定的日期和时间生成报告 .
因此,在阅读了Quartz Scheduler之后,我发现它看起来非常合适 .
我的问题是:我应该将基于Quartz的调度应用程序设计为在Tomcat中运行(通过QuartzInitializerListener),还是将其构建为独立应用程序以作为Linux守护程序运行(例如,通过Apache Commons Daemon或Tanuk Java Service Wrapper) .
一方面,使用Tomcat来托管不适合接收http调用的应用程序,这对我来说是违反直觉的 . 另一方面,我之前没有使用过Apache Commons Daemon或Java Service Wrapper,所以也许在Tomcat中运行是阻力最小的路径 .
我应该注意哪种方法有任何重大的好处或危险吗?我们的核心模块已经负责数据访问,日志记录等,因此我认为这些服务无论哪种方式都不是很重要 .
我们的调度将是数据驱动的,因此我们的基于Quartz的调度程序将从PostgreSQL中读取相关数据 . 但是,如果我们在Tomcat中运行调度应用程序,是否可以/合理地通过http调用Tomcat将消息发送到我们的应用程序?最后,fwiw,由于我们的工作将由我们现有的应用程序数据驱动,我认为不需要Quartz JDBCJobStore .