我想开发一个简单的Java Web应用程序,以便在完成某项任务后发送电子邮件通知,例如提交审批的请求,以及定期提醒(称批准者)。我想使用Quartz Scheduler来做到这一点。我是新手,所以任何人都可以帮助我开始这个。
先谢谢。
我在WEB-INF \ lib中复制并粘贴了JAR文件:quartz-1.8.0,甚至在普通\ lib中,然后在我的Java文件中导入时找不到它。 :(
答案 0 :(得分:7)
创建一个从web-app init开始的servlet。
<web-app>
...
<servlet>
<servlet-name>Emailer</servlet-name>
<servlet-class>my.servlet.Emailer</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
...
</web-app>
在servlet的init()
中配置您的调度程序(以下示例每10分钟触发一次)
SchedulerFactory schFact = new org.quartz.impl.StdSchedulerFactory();
Scheduler sched = schFact.getScheduler();
JobDetail job = new JobDetail("job1", "group1", EmailerJob.class);
CronTrigger trigger = new CronTrigger("trigger1", "group1", "job1", "group1", "* 0/10 * * * ?");
sched.addJob(job, true);
sched.start();
编写一个类的实现Quartz的Job接口。
EmailerJob implement Job{
public void execute(JobExecutionContext arg0) throws JobExecutionException {
//Code to send mails goes here
}
}
P.S。上面的代码未经过测试,但它可以让您明白该做什么。
正如@jmort253正确指出的那样,Quartz教程是最好的资源,如果我没记错的话,他们会在某个地方完成预定的电子邮件示例。
<强>更新强>
好吧,Google可以解决您的问题。这是您最详细的解决方案,任何人都可以给你! Java – Job Scheduling in web application with quartz API 编辑#1 您可以使用ContextListener
代替servlet来启动Quartz调度程序。
更新1
正如@jhouse正确地提到的那样,您可以要求Quartz预定义的SendMailJob
类执行相同操作,而不是编写自己的Job
来处理邮件。谢谢@jhouse。