java - 创建 Java/Java EE 例程来发送邮件

标签 java jakarta-ee

对于帐户管理系统,我需要向数据库中的订阅剩余 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/

相关文章:

java - 无法在 ArrayList 中找到符号

java - 如何将包含特殊字符的数据发布到 Microsoft CRM Dynamics Web API?

multithreading - 如何在基于 servlet 的 Web 应用程序中运行后台任务?

java - 如何从常规 servlet 过滤器访问 JAX RS 方法?

java - Java 运行时如何映射到目标

java - 无法离开加入第二张 table

java - 如何从 Java 程序执行 Perl 脚本?

java - 如何在多核上线性扩展 NodeJS?

java - 使 WAR 像 JAR 一样可执行,以在应用程序之外提供命令行界面 (JBoss)

java - 你如何设置一个也可以使用 groovy 的 maven java 项目?