【问题标题】:Java scheduling serviceJava调度服务
【发布时间】:2012-07-22 06:18:49
【问题描述】:
我需要创建一个服务来安排基本上是获取命中某个 servlet 的请求的作业。我尝试使用基于这篇文章Running a background Java program in Tomcat 的 servlet 上下文侦听器来执行此操作,但是定义的 web.xml 更改导致 Tomcat 服务器上出现 404 错误。有没有人对如何做到这一点有任何其他建议?
此时我的一个想法是定义一个可运行的 servlet
public class Service extends HttpServlet implements Runnable {
//Does stuff
init() {
new Thread(this);
}
}
这是一个合理的方法吗?
【问题讨论】:
标签:
java
jakarta-ee
scheduled-tasks
【解决方案1】:
您可以考虑使用石英调度程序来处理作业:
http://quartz-scheduler.org/
例如(不特定于您的任务):
import java.util.Map;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class SchedulerJob implements Job
{
public void execute(JobExecutionContext context)
throws JobExecutionException {
Map dataMap = context.getJobDetail().getJobDataMap();
SchedulerTask task = (SchedulerTask)dataMap.get("schedulerTask");
task.printSchedulerMessage();
}
}
另一种选择(快速周转)是仅使用 cron 作业或 Windows 任务管理器,具体取决于您的操作系统。