[Java] Quartz를 이용한 독립 애플리케이션 생성

오늘은 #자바에서 #스케줄링을 위해 사용하는 라이브러리인 Quartz를 사용해 보기로 했습니다.물론 자바의 Timer 클래스를 적절히 사용해도 되겠지만 유용한 기능을 많이 제공해주는 #Quartz를 사용한다면 일이 조금 줄어들지 않을까 하는 판단에서 사용하게 되었습니다.우선 지난번 문서에 사용한 내용 그대로 계속 사용하는데 요구사항이 조금 잘못된 부분이 있습니다.

[Java] Quartz Scheduler Cron식 예투고자 : Ram Mokkapaty in Quartz 2015년 9월 16일 4248 ViewsQuartz 스케줄러는 두…blog.naver.com

우선 2개의 스케줄을 가져야 합니다.하나는 11시에 돌리고 다른 하나는 새벽에 돌려서 두 스케줄을 비교하는 프로그램을 작성해야 합니다.2번째는 오라클 테이블에서 질문한 내용을 Sqlite테이블에 처음에는 insert의 2번째의 스케줄 update를 하겠습니다.그런데 오라클 테이블에서 질문하고 sqlite테이블에 insert/update하는 것은 많이 하고 보니까 설명은 생략합니다.1. 일정 짜기-*NIX계에서 흔히 사용#cron#표현식을 이용하려면 약간의 지식이 필요합니다.나도 그렇게 깊은 지식을 자랑하는 사람은 아니므로 다음 사이트에 도움을 받기로 했습니다.물론 현재의 표현식 자체는 그리 어렵지 않지만 나중에 더 복잡한 표현식을 쓰기 위해서는 알고 있는 것이 좋습니다https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm

현식의미표 0 0 12**?매일 오후 12시(낮)에 화재0 15 10?*매일 오전 10시 15분에 화재0 15 10*?매일 오전 10시 15분에 화재0 15 10*?2005년도 중에는 매일 오전 10시 15분에 화재0 15 10*?2005년도 중에 매분 오후 2시 00분부터 오후 2시 59분에 화재가 발생 하죠?오후 2시부터 오후 2시 55분까지 매일 0/5 14,18*?5분마다 화재가 발생하고 오후 2시부터 오후 2시 55분까지 화재가 발생하고 오후 6시부터 오후 6시 55분까지 화재가 발생합니다.매일 0~5 14*?1분마다 화재가 발생합니다.매일 0 10,44 14?3 WEDFire매주 수요일 오후 2시 10분과 2시 44분의 3월0 15 10?*MON-FRIFIRE매주 월요일 화요일, 목요일, 금요일 오전 10시 15분*?매달 15일 오전 10시 15분에 화재0 15 10 L*?매달 마지막 날 오전 10시 15분에 화재0 15 10?*6 L매달 마지막 금요일 오전 10시 15분에 화재0 15 10?*6 L 2002-2005 2002년 2003년 2004년 동안 매달 마지막 금요일 오전 10시 15분에 화재0 15 10?*6 L 2002년부터 2005년 동안 매달 마지막 금요일 오전 10시 15분에 화재0 15 10(*,및 20050 15 10?*6#3매달 제3금요일 오전 10시 15분에 화재0 0 12 1/5*?매달 5일 오후 12시(정오)에 달의 첫날부터 화재가 발생합니다.0111111?매년 11월 11일 오전 11시 11분에 화재

検出された言語がありません。

入力言語を確認してください。

検出された言語がありません。

入力言語を確認してください。

Free Online Cron Expression Generator and Describer – FreeFormatter.comCron Expression Generator & Explainer – Quartz 使いやすいオンラインインターフェイスでクォーツ cron 式を生成します。 cron 式をいつ実行されるかを明確に説明する読み取り可能なテキストに変換し、cron 式の次の実行日を視覚化します。 cron expressi を変換···www.freeformatter.com

Free Online Cron Expression Generator and Describer – FreeFormatter.comCron Expression Generator & Explainer – Quartz 使いやすいオンラインインターフェイスでクォーツ cron 式を生成します。 cron 式をいつ実行されるかを明確に説明する読み取り可能なテキストに変換し、cron 式の次の実行日を視覚化します。 cron expressi を変換···www.freeformatter.com

Free Online Cron Expression Generator and Describer – FreeFormatter.comCron Expression Generator & Explainer – Quartz 使いやすいオンラインインターフェイスでクォーツ cron 式を生成します。 cron 式をいつ実行されるかを明確に説明する読み取り可能なテキストに変換し、cron 式の次の実行日を視覚化します。 cron expressi を変換···www.freeformatter.com2. 2. CronExpressionsクラスの上で見つけた表現式を使用するためのユーティリティ性クラスです。2. 2. CronExpressionsクラスの上で見つけた表現式を使用するためのユーティリティ性クラスです。각 메서드는 공통적으로 그룹 이름을 어규먼트로 받도록 했습니다. 3. Scheduler Mgr 클래스의 일정을 생성하는 클래스, 2개의 일정을 생성하기만 하면 되는 클래스입니다. 이 클래스는 ToolConfigMgr이라는 클래스를 아규먼트로 받게 되어 있습니다. 이 클래스는 이 애플리케이션을 구동하기 위한 환경 설정을 로드 및 저장하는 역할을 합니다. 이 클래스에서는 Oracle과 sqlite 연결을 위한 설정도 관리하게 되어 있습니다.각 메서드는 공통적으로 그룹 이름을 어규먼트로 받도록 했습니다. 3. Scheduler Mgr 클래스의 일정을 생성하는 클래스, 2개의 일정을 생성하기만 하면 되는 클래스입니다. 이 클래스는 ToolConfigMgr이라는 클래스를 아규먼트로 받게 되어 있습니다. 이 클래스는 이 애플리케이션을 구동하기 위한 환경 설정을 로드 및 저장하는 역할을 합니다. 이 클래스에서는 Oracle과 sqlite 연결을 위한 설정도 관리하게 되어 있습니다.그리고 두 개의 일정을 만들 때 각각의 Job Detail 클래스를 인스턴스화 할 경우 다음과 같이 두 개의 클래스를 구분할 수 있도록 만들었습니다.fire Anno Job Before 메서드:JobDetail jobDetail = jobBuildering JobData(“Job”, “JobBefore”) singJobData(data)ithIdentity(“MyJobBefore”, BEFORE_GRP_1)uild(); 스케줄러.scheduler.job(잡상세,ronExpressions.fireEvery11 Oclock PM(BE_GRP_1));fire AnnoJob After 후에 다음의 조작을 실행합니다:ジョブ詳細 jobDetail = jobBuilderingJobData(“Job”, “JobAfter”) singJobData(data)ithIdentity(“MyJobAfter”, BEFORE_GRP_2)uild(); 스케줄러.scheduler.schedule(작업상세, ronExpressions. fireEvery2 OclockAM(BEFORE_GRP_2));그리고 공통적으로 위의 ToolConfigMgr 클래스를 각 job 클래스로 전송할 수 있도록 JobDataMap에 넣도록 하였습니다.JobBuilder = JobBuilder.newJob(….class);JobDataMap データ = = newJobDataMap();data.put(“config”, confMgr);이전 예시에서는 #JobDataMap에서 콜백 메소드를 사용하기 위해 자신을 어규먼트에 넘겼지만 이번에는 각 job 클래스에서 사용할 수 있도록 환경설정 클래스 인스턴스를 넘겼다는 것이 잘못된 것입니다. 4. 작업 클래스 각 작업 클래스는 작업 인터페이스의 execute 메서드를 구현하기만 하면 됩니다….일반 공개 반 JobAfter extends JobCommon은 작업{rivate final static Logger LOG=(Logger)LoggerFactory.getLogger(JobAfter.class)를 구현합니다;public void execute(JobExecutionContext jobContext)를 덮어 쓰면 작업의 실행이 슬로 됩니다<OG.info html————–}예외;OG.info(MyJob start:{}, jobContext.getFireTime();obDetail jobDetail=jobContext.getJobDetail();OG.info(예:{}, jobDetail.getJobDataMap(). getString(“Job”);OG.info(MyJob end:{}, 키:{}, jobContext.getJobRunTime(), jobDetail.getKey();OG.info(MyJob next scheduled time:{}, jobContext.getNextFireTime();OG.info(—————————–“);ConfigMgriClsConfig=(IConfigMgr)jobDetail.getJobDataMap(). get(“config”);obAfter= 새로운 작업 After();ogger root=(로거)LoggerFactory.getLogger(로거.ROOT_LOGGER_NAME);oot.setLevel(레벨.DEBUG);이후.what_ever_you_message()여기서 앞서 말씀드린 환경설정반을 다음과 같이 받을 수 있다는 것만 명심하면 될 것 같습니다.IConfigMgriClsConfig = (IConfigMgr) jobDetail.getJobDataMap().get(“config”);명시적으로 shutdown 메소드를 호출하지 않는 한 지속적으로 데몬처럼 행동하는 quartz를 이용한 어플리케이션을 만들어 보았습니다.이상입니다.

error: Content is protected !!