java - 创建 @ApplicationScoped 计划进程的最佳方法

标签 java jsf scheduled-tasks

我需要尝试在 JSF 应用程序中创建和发送电子邮件,但如果遇到异常,请将电子邮件存储在数据库表中并定期检查该表(例如每 10 分钟一次)以尝试再次发送电子邮件。

我的电子邮件可以正常工作,但想了解我应该尝试创建轮询服务的基本技术。我在想也许是一个 @ApplicationScoped bean,但不确定如何创建一个每 10 分钟左右在 bean 中运行一次的进程。

任何建议表示赞赏。

最佳答案

您没有具体指定您正在什么环境中工作,除了 JSF。然而,你想要的听起来像是某种预定的计时器。有几种方法可以实现这一目标:

Java EE Timer Service如果您可以访问完整的 Java EE 堆栈,这可能是最简单的方法。一个简单的注释,例如 @Stateless bean 中的方法上的 @Schedule(minute="*/10", hour="*") 将创建一个执行的计时器每十分钟一次。

另一个非常常用的库是 Quartz ,它可以做同样的事情。如果使用 Spring,我建议通过 Spring 使用 Quartz。请参阅official documentation获取有关如何设置的帮助。

关于java - 创建 @ApplicationScoped 计划进程的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17284158/

相关文章:

java - 为什么@Scheduled 注释不适用于@Transaction 注释。 Spring Boot

java - Wildfly 中的 JASPIC 客户端登录

java - MyBatis:从3.0.3升级到3.2.7时出错

java - 在 Glassfish 3 上部署 JSF 应用程序

java - 多个浏览器选项卡/窗口和 NUMBER_OF_VIEWS_IN_SESSION

.net-3.5 - Wix 3.5 创建计划任务

使用 getStringArray 时出现 java.lang.NullPointerException

Java 文件不会在所有行的末尾保存新行

jsf - p :dataTable rowEdit are not available in listener method as they are being overwritten by existing data from database 中的编辑/更新值

c# - 从 Web 应用程序运行计划任务