繁体   English   中英

在Java Web应用程序中定期更新数据库的最佳方法

[英]Best Way to Update Database Periodically in Java Web Application

我有一个在Glassfish服务器上运行的java Web应用程序。 使用war文件我用于在各种服务器中部署应用程序。 现在为了保持我的应用程序的数据库更新,我想定期运行一些类(在应用程序内部)而不进行任何用户交互(不应该依赖于应用程序正在运行或不运行/当前用户/会话)。 我已经看到使用一些TimerTimerTask类我可以定期运行任何工作。 但是如何首次初始化呢?

请考虑如何完成此过程。

使用作业计划程序。 考虑Quartz http://quartz-scheduler.org/并在程序启动时启动它。 使用调度程序的好处是程序更易于维护,您可以轻松创建其他新作业

创建一个servlet并在启动时加载它。 我认为你可以在那里初始化你的任务。

Quartz是一个很好的解决方案。 但是如果你需要更轻量级的东西,我会看看预定的执行者:

http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ScheduledExecutorService.html

它不如Quartz灵活,但您不需要添加任何依赖项,它可能足以满足您的需求。

关于启动; 我通常使用Spring来连接我的应用程序及其依赖项。 因此,启动调度程序和运行计划任务是没有道理的。

答案会根据您使用的Java EE版本而变化。 在Java EE 5和以前的版本中,您将使用ServletContextListener在使用Timer API的部署时运行代码(调用EJB)。 在Java EE 6+中,您可以使用@Schedule批注,该批注使用注释和cron类型语法在部署时安排任务。

当然,如果您不需要自动部署时间安排,那么您只需创建一些在提交时调用EJB的Web表单,然后以编程方式调用Timer API。

有关更多信息,请参阅Java EE教程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM