[java] Tomcat에서의 스케줄링 작업 설정 방법

Tomcat은 Java 웹 애플리케이션 서버이며, 스케줄링 작업(예약된 작업)을 설정하는 방법을 제공합니다. 이를 통해 정기적으로 반복되거나 일정 시간마다 실행되는 작업을 자동화할 수 있습니다.

1. Java Timer 및 TimerTask 클래스 사용

Java Timer 및 TimerTask 클래스는 스케줄링 작업을 설정하는 가장 간단한 방법 중 하나입니다. 아래의 예제 코드를 참조하세요.

import java.util.Timer;
import java.util.TimerTask;

public class MyTask extends TimerTask {
    @Override
    public void run() {
        // 스케줄링 작업을 수행할 코드 작성
    }
}

public class Main {
    public static void main(String[] args) {
        Timer timer = new Timer();
        int delay = 1000; // 작업 시작까지의 지연 시간 (밀리초)
        int period = 5000; // 작업 간격 (밀리초)

        timer.scheduleAtFixedRate(new MyTask(), delay, period);
    }
}

위의 예제에서 MyTask 클래스는 TimerTask 클래스를 상속받아 run 메서드를 구현합니다. run 메서드 안에는 스케줄링 작업을 수행할 실제 코드를 작성하면 됩니다.

Main 클래스에서 Timer 객체를 생성한 후 scheduleAtFixedRate 메서드를 사용하여 MyTask 인스턴스를 주기적으로 실행하도록 설정합니다. delay 매개변수는 첫 번째 작업이 실행되기까지의 지연 시간을 설정하고, period 매개변수는 작업 간격을 설정합니다.

2. Cron 표현식 사용

Cron 표현식은 Unix 및 Linux 시스템에서 널리 사용되며, 특정 시간에 작업을 예약하기 위해 사용됩니다. Tomcat에서도 Cron 표현식을 사용하여 스케줄링 작업을 설정할 수 있습니다.

Tomcat의 context.xml 파일에서 Cron 표현식을 사용하여 스케줄링 작업을 설정하는 예제를 아래에서 확인할 수 있습니다.

<Context>
    <!-- 기타 설정 -->
    
    <Listener className="org.apache.catalina.core.StandContextListener" />
    <Listener className="org.apache.catalina.core.StandardContextUser" />

    <Manager className="org.apache.catalina.session.StandardManager">
        <!-- 스케줄링 작업 설정 -->
        <BackgroundProcess delay="60000" checkInterval="1000" maxIdleBackup="1" schedulerProvider="org.apache.catalina.session.StoreBackupSchedulerProvider">
            <Scheduler className="org.apache.catalina.session.StandardStoreBackupScheduler" maxIdleBackup="1" checkIntervalSeconds="60" maxActiveSessions="1" />
        </BackgroundProcess>
    </Manager>
    
    <!-- 기타 설정 -->
</Context>

위의 예제에서 BackgroundProcess 엘리먼트는 스케줄링 작업을 설정하는 역할을 합니다. delay 속성은 작업이 실행되기까지의 지연 시간을 설정하고, checkInterval 속성은 작업 간격을 설정합니다.

결론

Tomcat에서 스케줄링 작업을 설정하는 방법은 다양합니다. Java Timer 및 TimerTask 클래스 또는 Cron 표현식을 사용하여 작업을 예약할 수 있습니다. 적절한 방법을 선택하여 웹 애플리케이션의 요구에 맞게 스케줄링 작업을 설정하세요.