我有一个调度程序,可以在特定时间每天安排电子邮件服务。我扩展HttPServlet
,我正在调用init()
方法中运行调度的方法。
当服务器重新启动时,它会触发调度程序,并在每次重新启动服务器时发送电子邮件,也会在选定的时间触发。
是否有不同的方法来禁用在服务器启动时运行调度程序
public class BatchJobsServlet extends HttpServlet {
public void init(ServletConfig arg0) throws ServletException {
super.init(arg0);
/**
* TODO Assign to single node on server for Batch Processing
*/
if(isBatchServer()) {
initDailyBatch();
}
try {
//
} catch(Exception e) {
e.printStackTrace();
}
initDailyBatch();
}
private void initDailyBatch() {
try {
//Code to set the timer and trigger the scheduler
}
} catch(Exception e) {
}
}
}
web.xml
中的
<servlet>
<display-name>BatchJobsServlet </display-name>
<servlet-name>BatchJobsServlet </servlet-name>
<servlet-class>...BatchJobsServlet </servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
答案 0 :(得分:0)
您可以记录上次发送邮件的时间,并检查每次Access Levels
Modifier Class Package Subclass World
public Y Y Y Y
protected Y Y Y N
(Default) Y Y N N
private Y N N N
呼叫(重启)后是否是发送邮件的时间。
更好的解决方案让本机服务这样做,例如init()
,只需cron调用应用程序将触发servlet的本地应用程序(通过调用路径和授权令牌)