Header

  1. View current page

    정상혁의 수첩

Profile_img_60x60_08
195

Quartz

Job Scheduling in Java

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

 

quartz를 사용하기 위해 필요한 라이브러리

Quartz 간단한 예제

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/

OSGi - Spring Quartz job

http://markmail.org/message/iyjgnnahrnjyie4q#query:osgi%20quartz+page:1+mid:ucnb3y5ws6wl7vog+state:results

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)

You must log in to leave a comment. Please sign in.