지속적 Enterprise JavaBeans(EJB) 타이머의 구성 옵션

지속적 EJB 타이머는 ejbPersistentTimer 기능을 사용으로 설정하고 ID가 DefaultDataSource인 기본 데이터 소스가 데이터베이스를 가리키도록 설정하는 것 외에 다른 구성을 필요로 하지 않습니다. 사용자는 다른 데이터 소스를 선택하고, 지속된 타이머 태스크를 검색하기 위해 데이터베이스를 폴링하는 시점 및 방법을 제어하고, 실패하거나 롤백된 타이머 태스크의 재시도 여부 및 간격을 지정하는 등과 같은 동작을 제어하기 위해 선택적 구성 설정을 사용할 수 있습니다.

EJB 타이머 구성은 선택적 timerService 구성 요소에 의해 지정됩니다. 지속적 EJB 타이머의 구성 속성은 persistentExecutor 구성에서 더 세부적으로 그룹화됩니다. 기본적으로 EJB 타이머 서비스는 이름이 defaultEJBPersistentTimerExecutor인 지속적 실행기 인스턴스를 사용합니다. 타이머 서비스를 구성하면 다른 지속적 실행기 인스턴스를 사용하도록 EJB 지속적 타이머를 사용자 정의할 수 있습니다. 그러나 EJB 지속적 타이머 구성을 사용자 정의하는 가장 좋은 방식은 defaultEJBPersistentTimerExecutor 인스턴스로부터 기본값을 상속하도록 defaultEJBPersistentTimerExecutor 인스턴스를 대체하는 것입니다.

예를 들어, 재시도 한계만을 대체하려면 다음과 같이 지정하십시오.
 <persistentExecutor id="defaultEJBPersistentTimerExecutor" retryLimit="50"/>
지속적 타이머 태스크의 데이터베이스 저장소 사용자 정의
지속적 EJB 타이머 태스크는 데이터베이스에 지속됩니다. 데이터베이스와 관련된 구성은 databaseStore 구성 요소에서 그룹화됩니다. 다르게 구성되지 않는 한 지속적 EJB 타이머, 그리고 데이터베이스를 필요로 하는 다른 제품 기능에는 이름이 defaultDatabaseStore인 databaseStore의 인스턴스가 사용됩니다. defaultDatabaseStore 인스턴스를 대체하는 데 대한 예제는 다음과 같습니다.
 <databaseStore id="defaultDatabaseStore" dataSourceRef="DB2DataSource" tablePrefix="MYTIMERS"/>
다른 databaseStore 인스턴스를 사용하도록 defaultEJBPersistentTimerExecutor를 구성하는 데 대한 예제는 다음과 같습니다.
  <persistentExecutor id="defaultEJBPersistentTimerExecutor" taskStoreRef="MyDBStore"/>
  <databaseStore id="MyDBStore" dataSourceRef="DB2DataSource" tablePrefix="MYTIMERS">
    <authData user="user1" password="password1"/>
  </databaseStore>
지속적 타이머 태스크 실행 사용 및 사용 안함 설정

지속적 EJB 타이머 태스크는 트랜잭션이 예약된 위치에서 커미트되면 실행되도록 설정됩니다. enableTaskExecution 속성을 false 값으로 구성하면 지속적 타이머 태스크가 실행되는 것을 방지할 수 있으며, 이 때 EJB 타이머 서비스는 여전히 데이터베이스에 지속적 타이머 태스크를 기록하지만 이를 실행하지는 않습니다. 이 값이 true로 전환되면 EJB 타이머 서비스는 이전에 예약되었던 타이머와 예약된 새 타이머를 실행하기 시작합니다.

타이머 태스크에 대한 지속적 저장소의 폴링 사용자 정의
시작 시에는 이전에 예약된 타이머 태스크를 찾기 위해 지속적 저장소의 초기 폴링이 한 번 수행됩니다. 태스크가 예약되면 예약된 다음 실행 시간에 대한 정보가 지속되는 동시에 메모리에도 유지되어, 지속적 저장소의 추가 폴링을 수행할 필요가 없도록 합니다. 이 동작은 많은 경우에 이상적이지만 항상 바람직하지는 않을 수도 있습니다.
  • 타이머 태스크에 다른 서비스에 대한 외부 종속성이 있는 경우에는 초기 폴링이 너무 일찍 수행됨으로써 타이머 태스크가 필요로 하는 외부 서비스를 사용할 수 없어 이 태스크가 실패할 수 있습니다. 이러한 실패가 발생하는 경우에는 초기 폴링 지연을 사용하여 초기 폴링을 지정된 시간만큼 지연시킬 수 있습니다.
  • 많은 수의 EJB 지속적 타이머가 예약된 경우에는 이러한 타이머가 너무 많은 메모리를 이용할 수 있습니다. 이 경우에는 다음 폴링 전까지 간격 내에 실행하고자 하는 타이머 태스크에 대해서만 지속적 저장소를 주기적으로 폴링하도록 폴링 간격을 구성할 수 있습니다. 폴 크기는 각 폴링 간격에 데이터베이스에서 읽을 수 있는 타이머 태스크의 수를 추가로 제한하며, 이로 인해 일부 태스크가 늦게 실행될 수 있습니다.
구성 예제:
<persistentExecutor id="defaultEJBPersistentTimerExecutor" initialPollDelay="5m" pollInterval="10m" pollSize="200"/>
실패하거나 롤백된 지속적 타이머 태스크에 대한 재시도

지속적 EJB 타이머 실행이 실패하거나 롤백하도록 표시된 경우에는 첫 번째 재시도가 즉시 수행됩니다. 즉시 수행된 재시도가 실패하면 이는 완료될 때까지 지정된 간격마다 재시도됩니다. 구성에 재시도 한계를 지정하면 재시도 횟수를 제한할 수 있습니다. 구성에 재시도 간격을 지정하여 재시도 간 간격을 제어할 수도 있습니다.

구성 예제:
  <persistentExecutor id="defaultEJBPersistentTimerExecutor" retryLimit="100" retryInterval="2m"/>

주제의 유형을 표시하는 아이콘 참조 주제

파일 이름: rwlp_ejbtime_options.html