quartz作业监听

来源:互联网 发布:linux 覆盖复制 编辑:程序博客网 时间:2024/06/03 13:25

定时任务运行的程序出现异常时会输出异常信息

package com.quartz;import java.util.Date;import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;public class HelloJob implements Job {public void execute(JobExecutionContext context)throws JobExecutionException {System.out.println(new Date()+" : Hello Quartz! 123");//测试/*String str1 = null ;if(str1.equals("123")){System.out.println("str1.equals123");}输出:jobToBeExecutedJob : group1.dummyJobName,triggerName:group1.dummyTriggerName is going to start...Sat May 20 17:52:50 CST 2017 : Hello Quartz! 123jobWasExecutedJob : group1.dummyJobName is finished...Exception thrown by: group1.dummyJobName Exception: org.quartz.SchedulerException: Job threw an unhandled exception.
                [See nested exception: java.lang.NullPointerException]*/// Throw exception for testingthrow new JobExecutionException("Testing Exception");}}
package com.quartz;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;import org.quartz.JobListener;public class HelloJobListener implements JobListener {public static final String LISTENER_NAME = "dummyJobListenerName";@Overridepublic String getName() {return LISTENER_NAME; // must return a name//return null; //Exception in thread "main" java.lang.IllegalArgumentException: JobListener name cannot be empty.}// Run this if job is about to be executed.@Overridepublic void jobToBeExecuted(JobExecutionContext context) {String jobName = context.getJobDetail().getKey().toString();String triggerName = context.getTrigger().getKey().toString();System.out.println("jobToBeExecuted");System.out.println("Job : " + jobName+",triggerName:" +triggerName + " is going to start...");}// No idea when will run this?@Overridepublic void jobExecutionVetoed(JobExecutionContext context) {System.out.println("jobExecutionVetoed");}// Run this after job has been executed@Overridepublic void jobWasExecuted(JobExecutionContext context,JobExecutionException jobException) {System.out.println("jobWasExecuted");String jobName = context.getJobDetail().getKey().toString();System.out.println("Job : " + jobName + " is finished...");if (!jobException.getMessage().equals("")) {System.out.println("Exception thrown by: " + jobName+ " Exception: " + jobException.getMessage()+"\n\n");}}}
package com.quartz;import org.quartz.CronScheduleBuilder;import org.quartz.JobBuilder;import org.quartz.JobDetail;import org.quartz.JobKey;import org.quartz.Scheduler;import org.quartz.Trigger;import org.quartz.TriggerBuilder;import org.quartz.impl.StdSchedulerFactory;import org.quartz.impl.matchers.GroupMatcher;import org.quartz.impl.matchers.KeyMatcher;import com.quartz.HelloJobListener;public class Quartz2JobListener {public static void main(String[] args) throws Exception {JobKey jobKey = new JobKey("dummyJobName", "group1");JobDetail job = JobBuilder.newJob(HelloJob.class).withIdentity(jobKey).build();Trigger trigger = TriggerBuilder.newTrigger().withIdentity("dummyTriggerName", "group1").withSchedule(CronScheduleBuilder.cronSchedule("0/1 * * * * ?")).build();Scheduler scheduler = new StdSchedulerFactory().getScheduler();// Listener attached to jobKey//scheduler.getListenerManager().addJobListener(new HelloJobListener(),KeyMatcher.keyEquals(jobKey));// Listener attached to group named "group 1" only.//和上面注释的attached方法均可 scheduler.getListenerManager().addJobListener(new HelloJobListener(), GroupMatcher.jobGroupEquals("group1"));scheduler.start();scheduler.scheduleJob(job, trigger);try {Thread.sleep(2000);//只会输出3条结果scheduler.shutdown();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}/*log4j:WARN No appenders could be found for logger (org.quartz.impl.StdSchedulerFactory).log4j:WARN Please initialize the log4j system properly.log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.jobToBeExecutedJob : group1.dummyJobName,triggerName:group1.dummyTriggerName is going to start...Sat May 20 19:55:50 CST 2017 : Hello Quartz! 123jobWasExecutedJob : group1.dummyJobName is finished...Exception thrown by: group1.dummyJobName Exception: Testing ExceptionjobToBeExecutedJob : group1.dummyJobName,triggerName:group1.dummyTriggerName is going to start...Sat May 20 19:55:51 CST 2017 : Hello Quartz! 123jobWasExecutedJob : group1.dummyJobName is finished...Exception thrown by: group1.dummyJobName Exception: Testing ExceptionjobToBeExecutedJob : group1.dummyJobName,triggerName:group1.dummyTriggerName is going to start...Sat May 20 19:55:52 CST 2017 : Hello Quartz! 123jobWasExecutedJob : group1.dummyJobName is finished...Exception thrown by: group1.dummyJobName Exception: Testing Exception*/

参考:

http://www.yiibai.com/quartz/quartz-joblistener.html




原创粉丝点击