Class EasyDeskJob

java.lang.Object
org.springframework.scheduling.quartz.QuartzJobBean
com.easydesk.web.scheduler.EasyDeskJob
All Implemented Interfaces:
org.quartz.Job
Direct Known Subclasses:
HeartbeatJob

public abstract class EasyDeskJob extends org.springframework.scheduling.quartz.QuartzJobBean
이 앱의 Quartz job 이 상속하는 기본 클래스. - job 인스턴스는 Spring Boot 의 Quartz 자동 설정(SpringBeanJobFactory)이 만들어 주므로, 하위 클래스는 일반 Spring 빈처럼 생성자/필드로 다른 빈을 주입받을 수 있다. - executeJob(JobExecutionContext) 은 JobContextBinder 가 system 사용자 context 를 바인딩한 상태에서 호출된다. (그래서 executeInternal 은 final 로 막아 두었다 - context 없이 OM 을 건드리는 실수 방지) - 시작/종료/소요시간/실패를 공통으로 로그에 남긴다. 예외는 JobExecutionException 으로 감싸서 Quartz 에 넘긴다 (refireImmediately=false : 바로 재실행하지 않고 다음 trigger 시점을 기다린다). 새 job 추가 방법은 QuartzJobConfig 의 주석을 참고.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected final org.slf4j.Logger
     
    static final String
    JobDataMap key : 관리 화면에서 "지금 실행" 을 누른 사용자 이름 (일정에 따라 실행될 때는 없음)
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected final void
    executeInternal(org.quartz.JobExecutionContext context)
     
    protected abstract void
    executeJob(org.quartz.JobExecutionContext context)
    실제 job 내용. system 사용자 context(SecurityContextHolder / RequestContextHolder / TransactionContextHolder)가 바인딩된 상태에서 호출된다.
    void
     

    Methods inherited from class org.springframework.scheduling.quartz.QuartzJobBean

    execute

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • TRIGGERED_BY

      public static final String TRIGGERED_BY
      JobDataMap key : 관리 화면에서 "지금 실행" 을 누른 사용자 이름 (일정에 따라 실행될 때는 없음)
      See Also:
    • logger

      protected final org.slf4j.Logger logger
  • Constructor Details

    • EasyDeskJob

      public EasyDeskJob()
  • Method Details

    • setJobContextBinder

      @Autowired public void setJobContextBinder(JobContextBinder jobContextBinder)
    • executeInternal

      protected final void executeInternal(org.quartz.JobExecutionContext context) throws org.quartz.JobExecutionException
      Specified by:
      executeInternal in class org.springframework.scheduling.quartz.QuartzJobBean
      Throws:
      org.quartz.JobExecutionException
    • executeJob

      protected abstract void executeJob(org.quartz.JobExecutionContext context) throws Exception
      실제 job 내용. system 사용자 context(SecurityContextHolder / RequestContextHolder / TransactionContextHolder)가 바인딩된 상태에서 호출된다.
      Parameters:
      context - Quartz job 실행 정보 (JobDataMap, fireTime 등)
      Throws:
      Exception - 실패 시. Quartz 에는 JobExecutionException 으로 전달된다.