2013-06-25 52 views
1

我必须安排邮件在特定时间每天发送,我想有一个有经验的意见。 我想知道的,是如果这是正确的(最好的)的方式做这样的事情,使用Quartz调度:这是安排日常工作的正确方法吗?

#代码

public static void startScheduler(){ 
     SchedulerFactory sf = new StdSchedulerFactory(); 
     try { 
      Scheduler sched = sf.getScheduler(); 

      JobDetail job = newJob(SendDocumentsMailJob.class) 
       .withIdentity("sendMailJob", "group1") 
       .build(); 

      Date startTime = todayAt(6,0,0); 

      SimpleTrigger trigger = newTrigger() 
       .withIdentity("everyDayAt6oClock", "group1") 
       .startAt(startTime) 
       .withSchedule(simpleSchedule() 
        .withIntervalInHours(24) // is this correct? 
        .repeatForever()) 
       .build(); 

      sched.scheduleJob(job,trigger); 

      sched.start(); 
      System.out.println("Starting at: "+new Date()); 
      System.out.println("Next trigger fires at: "+startTime); 

      // sched.shutdown(); // is this correct? 

     }catch (SchedulerException ex) { ex.printStackTrace();} 
     //catch (InterruptedException ex) { ex.printStackTrace();} 
     catch (Exception ex) { ex.printStackTrace();} 
    } 

我没有找到任何方法设置一个每日间隔,所以我用:withIntervalInHours(24),是否正确?

调度程序将无限期地运行,所以我不必致电shutdown(),对吗?

感谢,

+0

你在什么环境下运行它(os/server) – aglassman

+0

它将运行在CentOS 5.9./ Java 1.7./ Glassfish 3.1.2.2上。网络服务器。 –

+0

为什么不使用本地os调度程序?我认为在运行于服务器环境中运行类似代理程序的模块不是好主意 – 2013-06-25 21:21:37

回答

0

因为你是一个Web服务器上运行,这确实是做到这一点的可行方法。不要调用关机,因为这会停止触发器的触发。

相关问题