禁用在tomcat启动时运行调度程序

时间:2015-08-19 21:35:18

标签: java tomcat servlets

我有一个调度程序,可以在特定时间每天安排电子邮件服务。我扩展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>

1 个答案:

答案 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的本地应用程序(通过调用路径和授权令牌)