对于帐户管理系统,我需要向数据库中的订阅剩余 XX 天的用户发送一封电子邮件。
这个想法是在我的 Java EE 代码(使用 VAADIN 7.2 框架用 Java/Java EE 编写的应用程序)中创建一个函数,用于检查每个用户的剩余时间,如果剩余时间为 XX 天,则发送电子邮件我的 MailEngine() 类;
问题是我不知道如何在 Java/Java EE 中创建类似的守护进程,或者例如每天中午 12:00 调用函数。
解决方案可以是创建一个每天由 crontab 调用的 Java 应用程序,但最好的解决方案是在我的 Java EE 应用程序中执行此操作,然后它将完全可自定义(在 Web 界面中更改邮件正文/标题,对于非开发人员的管理员)。
编辑:
我测试了 joseripla 发送的这段代码
import javax.ejb.Schedule;
import javax.ejb.Singleton;
@Singleton
public class MarketingMailEngine {
int count = 0;
//Print to log every 5 seconds
@Schedule(second="*/5", minute="*", hour="*", persistent=true)
public void print() {
System.out.println(count);
count++;
}
}
但它只打印 0,即使我等待几分钟(它应该每 5 秒执行一次)。
最佳答案
您的问题的解决方案是使用 Java EE 计划时间服务 link
一些基本代码:
import javax.ejb.Schedule;
import javax.ejb.Singleton;
import javax.inject.Inject;
@Singleton
public class SampleTask {
@Inject
private org.slf4j.Logger logger;
//Print to log every 5 seconds
@Schedule(second="*/5", minute="*", hour="*", persistent=false)
public void print() {
String m = "********** --------- CRON-TASK ---------- *********";
logger.info(m);
}
}
就这样完成了。
关于java - 创建 Java/Java EE 例程来发送邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26342962/