2013-07-10 100 views
1

大家好我想用Quartz來發送消息。但我真的不知道如何。 我可以發送消息給給定的移動電話號碼,但爲了安排它的困難。我試圖爲servlets中的Quartz Scheduler

1)我以郵件,手機號碼,週期,從用戶(JobSchedule.jsp)

2)我調用的Servlet的jobscheduler(JobSchdeduleServlet.java)..在這裏我DNT知道如何將變量傳遞給類(TestJob.java)

// JobSchdeduleServlet.java .. 
     //specify the job's details.. 

     JobDetail job = JobBuilder.newJob(TestJob.class) 
      .withIdentity("testJob") 
      .build(); 

    // SimpleScheduleBuilder.simpleSchedule() 
    // .withIntervalInSeconds(120); 
     // specify the running period of the job 
     int count=Integer.parseInt(request.getParameter("count")); 
     int hours= Integer.parseInt(request.getParameter("Period")); 
     request.getSession().setAttribute("nmo", request.getParameter("mobNo")); 
     request.getSession().setAttribute("msg", request.getParameter("tskMsg")); 
     String msg=request.getParameter("tskMsg"); 
     String mbno=request.getParameter("mobNo"); 
     Trigger trigger = TriggerBuilder.newTrigger() 
       .withSchedule(
        SimpleScheduleBuilder 
        .repeatHourlyForTotalCount(count, hours)) 
         .build(); 


     //schedule the job 
     SchedulerFactory schFactory = new StdSchedulerFactory(); 
     Scheduler sch = schFactory.getScheduler(); 
     sch.start(); 
     sch.scheduleJob(job, trigger); 

3)從這個servlet我打電話TestJob.java

// TestJob.java 
     public void execute(JobExecutionContext jExeCtx) throws JobExecutionException { 
    try {   
     System.out.println("Printing ......"+jExeCtx); 
     SendSms.sendSms("9762809280", "Hi");// Here I dont know how to pass user defined mobile no n Message 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
log.debug("TestJob run successfully..."); 
} 

4)在TestJob.java我打電話我的消息發送方法但我不知道如何通過手機號碼和消息?

回答

3

使用JobDataMap來保存您的自定義數據並在執行作業期間使用。

例:

JobDetail job = JobBuilder.newJob(TestJob.class) 
     .withIdentity("testJob") 
     .build(); 
job.getJobDataMap().put("mobile", "1234567890"); 
job.getJobDataMap().put("msg", "Your balance is low"); 

public void execute(JobExecutionContext jExeCtx) throws JobExecutionException { 
try {   
JobDataMap dataMap = context.getJobDetail().getJobDataMap(); 
String msg = dataMap.getString("msg"); 
String mobile = dataMap.getFloat("mobile"); 
SendSms.sendSms(mobile,msg); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (Exception e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
log.debug("TestJob run successfully..."); 
}