본 장에서는 JEUS Scheduler의 기능과 사용 가능한 환경, 수행 방식에 대해 설명한다.
JEUS Scheduler는 정해진 시간에 수행되거나 반복적으로 수행되는 작업을 scheduling할 수 있는 기능을 제공한다.
Scheduler는 JEUS의 확장된 기능으로 정해진 시간이나 주기적으로 작업을 수행해야 할 때 사용할 수 있다. EJB의 경우 Timer Service와 같은 기능을 제공하는데 이와 유사한 목적을 지니고 있으며 EJB 환경이 아니더라도 사용할 수 있다. 예를 들어 주기적으로 임시 파일을 삭제한다거나, 주기적으로 데이터베이스 커넥션을 체크하는 등의 시스템 관리에 사용할 수도 있다.
Java EE 환경에서 Timer Service를 이용할 때 Java SE Timer(java.util.Timer)를 직접 사용할 수 없으므로 EJB Timer Service를 사용하거나 JEUS에서 제공하는 JEUS Scheduler를 사용해야 한다. EJB Timer Service는 EJB 환경에서만 사용할 수 있는데 반하여 JEUS Scheduler는 모든 Java EE 환경에서 사용할 수 있고 일반 Java SE 애플리케이션에서도 사용이 가능하다.
JEUS Scheduler는 Java SE Timer(java.util.Timer)와 유사하기 때문에 Java SE Timer에 익숙하다면 JEUS Scheduler를 쉽게 사용할 수 있다. 또한 Java SE Timer에는 없는 작업 종료 시점(end time)과 최대 수행 횟수(max count)를 지정할 수 있는 기능도 제공한다.
JEUS Scheduler는 다음과 같이 다양한 환경에서 사용이 가능하다.
Java SE 애플리케이션에서 Standalone Scheduler 사용
Java EE 애플리케이션 클라이언트에서 Standalone Scheduler 사용
JEUS 서버 Scheduler Service를 원격에서 접속하여 사용
JEUS 서버 설정 파일에 Job을 등록해서 사용
JEUS 서버 Scheduler Service를 Java EE 컴포넌트에서 사용
JEUS Scheduler는 사용자 애플리케이션 내에서 사용할 수도 있고 JEUS 서버에서 사용할 수도 있다. JEUS 서버는 원격에서 접속할 수 있는 Scheduler Service를 구동시킬 수 있으며 설정 파일을 통해 scheduling될 작업을 등록할 수도 있다.
JEUS Scheduler의 컴포넌트는 다음과 같은 구조를 갖는다.
Scheduler 서버의 종류에 따라 Scheduler의 수행 방식이 달라지고, Scheduler Service가 구분된다.
다음은 Scheduler 서버의 종류에 따른 수행 방식을 나타낸다.
다음은 각각의 Scheduler Service를 사용하는 경우에 대한 설명이다.
서버 Scheduler Service
항상 주기적으로 수행되어야 할 작업을 scheduling할 때 사용한다. 서버에서 항상 수행되어야 할 주기적인 작업이 있다면 Job-list에 미리 등록하여 서버가 구동할 때 수행되도록 할 수도 있다.
Java EE 컴포넌트들(Servlet, JSP, EJB 등)이 주기적으로 수행되는 작업을 scheduling할 때 주로 사용을 scheduling할 때 주로 사용한다. 또한 JNDI 저장소에 등록되어서 원격 클라이언트에서도 사용할 수 있다.
클라이언트 Scheduler Service
애플리케이션 클라이언트에서 Standalone 방식으로 구동되는 JEUS Scheduler Service는 애플리케이션 클라이언트 내부에서 어떠한 작업을 주기적으로 수행하는 경우 주로 사용한다. 또한 애플리케이션 클라이언트가 종료되면 더 이상 수행될 필요가 없는 작업인 경우에 사용한다.