Quartz
Spring 에서의 Quartz 지원클래스들
org.springframework.scheduling.quartz.JobDetailBean
org.springframework.scheduling.quartz.SimpleTriggerBean
org.springframework.scheduling.quartz.CronTriggerBean
org.springframework.scheduling.quartz.SchedulerFactoryBean
org.springframework.scheduling.MethodInvokingJobDetailFactoryBean
http://blog.naver.com/mysm0722/10013190120
[정보]Quartz 사용 시 IntrospectorCleanupListener 사용
http://www.opensymphony.com/quartz/api/org/quartz/CronExpression.html
http://www.ibm.com/developerworks/java/library/j-quartz/
http://svn.apache.org/repos/asf/incubator/sling/trunk/commons/scheduler/
http://www.quartz-scheduler.org/docs/tutorial/TutorialLesson09.html
http://www.terracotta.org/quartz/?src=/index.html
http://forum.springsource.org/showthread.php?t=45899
Clutering
http://www.quartz-scheduler.org/docs/configuration/ConfigJDBCJobStoreClustering.html
http://www.codespot.net/blog/2010/12/quartz-where/
Code
public boolean startJob(final JobDetail jobDetail, final Trigger trigger) {
try { // If we got one already with the same name... overwrite it.
if (sched.getJobDetail(jobDetail.getName(), Scheduler.DEFAULT_GROUP) != null) {
deleteJob(jobDetail.getName(), Scheduler.DEFAULT_GROUP);
}
sched.scheduleJob(jobDetail, trigger);
OutputStream feedbackOutputStream = getFeedbackOutputStream();
if (feedbackOutputStream != null) {
feedbackOutputStream.write(Messages.getString("JobSchedulerComponent.INFO_0001").getBytes()); //$NON-NLS-1$
}
} catch (SchedulerException e) {
error(e.getLocalizedMessage());
return false;
} catch (IOException e) {
error(e.getLocalizedMessage());
return false;
}
return true;
}
public boolean suspendJob(final String jobName, final String groupName) {
try {
sched.pauseJob(jobName, groupName);
} catch (SchedulerException e) {
error(e.getLocalizedMessage());
return false;
}
return true;
}
public boolean deleteJob(final String jobName, final String groupName) {
try {
sched.deleteJob(jobName, groupName);
} catch (SchedulerException e) {
error(e.getLocalizedMessage());
return false;
}
return true;
}
public boolean resumeJob(final String jobName, final String groupName) {
try {
sched.resumeJob(jobName, groupName);
} catch (SchedulerException e) {
error(e.getLocalizedMessage());
return false;
}
return true;
}
}
private Scheduler getSchedulerHandle(ServerModel serverModel) throws SchedulerException {
Scheduler sche = null;
if (isLocalHost(serverModel.getIp(), serverModel.getService())) {
sche = localSche;
} else {
DirectSchedulerFactory sf = DirectSchedulerFactory.getInstance();
sche = sf.getScheduler(serverModel.getQualifiedName());
/*
* if the shcheduler is not created yet.
*/
if (sche == null) {
sf.createRemoteScheduler(serverModel.getQualifiedName(), DirectSchedulerFactory.DEFAULT_INSTANCE_ID,
serverModel.getQualifiedName(), serverModel.getIp(), this.getPort());
sche = sf.getScheduler(serverModel.getQualifiedName());
}
}
if (sche == null) {
throw new SchedulerException("can't find the scheduler");
}
return sche;
}
스케쥴러 생성
Scheduler sched = QuartzSystemListener.getSchedulerInstance();
StdSchedulerFactory sf = new StdSchedulerFactory();
sf.initialize(prop);
localSche = sf.getScheduler();
JobStore
Listener
http://www.quartz-scheduler.org/docs/tutorial/TutorialLesson07.html
http://www.quartz-scheduler.org/docs/tutorial/TutorialLesson08.html
TriggerListener, JobListener, SchedulerListener
http://www.quartz-scheduler.org/docs/quartz_users.html
Stop
http://grails.1312388.n4.nabble.com/How-to-stop-kill-a-running-quartz-job-td1362767.html
http://www.quartz-scheduler.org/docs/api/1.8.0/org/quartz/core/QuartzScheduler.html
History
Last edited on 12/06/2010 12:13 by benelog
Comments (0)