스케줄러를 사용하는 태스크 관리 메소드

스케줄러는 여러 가지 태스크 관리 메소드를 제공합니다.

스케줄러에서 create() 메소드를 호출하여 태스크를 작성하면 TaskStatus 오브젝트가 호출자에게 리턴됩니다. TaskStatus 오브젝트에는 고유한 ID인 태스크 ID가 포함되어 있습니다. 스케줄러 API 및 WASScheduler MBean은 태스크 ID를 매개변수로 사용하는 각 태스크 관리와 관련된 여러 추가 메소드를 정의합니다. 다음과 같은 태스크 관리 메소드가 정의됩니다.
suspend()
태스크를 일시중단합니다. 태스크가 재개될 때까지 실행되지 않습니다.
resume()
이전에 일시중단된 태스크를 재개합니다.
cancel()
태스크를 취소합니다. 태스크가 실행되지 않고 재개할 수 없습니다.
purge()
지속적 저장소에서 취소된 태스크를 영구적으로 삭제합니다.
getStatus()
태스크의 현재 상태를 리턴합니다.
태스크를 작성하거나 취소하려면 다음 API 예제를 사용하십시오.
//Create the task. 
TaskInfo taskInfo = ...
TaskStatus status = scheduler.create(taskInfo);

//Get the task ID
String taskId = status.getTaskId();

//Cancel the task. Specify the purgeAlso flag so that the task does not remain in the persistent store
scheduler.cancel(taskId,true);
태스크를 작성하거나 취소하려면 wsadmin 도구에서 다음 예제 JACL 스크립트 조작을 사용하십시오.
set jndiName sched/MyScheduler

# Map the JNDI name to the mbean name.  The mbean name is 
# formed by replacing the / in the jndi name with . and prepending 
# Scheduler_ 
regsub -all {/} $jndiName "." jndiNameset mbeanName Scheduler_$jndiName

puts "Looking-up Scheduler MBean $mbeanName"
set sched [$AdminControl queryNames WebSphere:*,type=WASScheduler,name=$mbeanName]
puts $sched

# Get the ObjectName format of the Scheduler MBean
set schedO [$AdminControl makeObjectName $sched]

# Create a TaskInfo object…
# (Some code excluded…)
set params [java::new {java.lang.Object[]} 1]
$params set 0 $taskInfo

set sigs [java::new {java.lang.String[]} 1]
$sigs set 0 com.ibm.websphere.scheduler.TaskInfo

set taskStatus [java::cast com.ibm.websphere.scheduler.TaskStatus [$AdminControl invoke_jmx $schedO
 create $params $sigs]]

set taskID [$taskStatus getTaskId]
puts "Task Created.  TaskID= $taskID"

# Cancel the task using the Task ID from the TaskStatus object returned during create.
set params [java::new {java.lang.Object[]} 1]
$params set 0 false

set sigs [java::new {java.lang.String[]} 1]
$sigs set 0 java.lang.boolean

set taskStatus [java::cast com.ibm.websphere.scheduler.TaskStatus [$AdminControl invoke_jmx $schedO
 cancel $params $sigs]]

트랜잭션 기능. 스케줄러 API의 모든 메소드는 트랜잭션 유형입니다. 글로벌 트랜잭션 컨텍스트가 있으면 이 컨텍스트를 사용하여 조작을 수행합니다. 예기치 못한 예외가 생긴 경우 트랜잭션은 롤백으로 표시되고 호출자가 올바르게 조작해야 합니다. 예상 또는 선언된 예외가 생기는 경우 트랜잭션은 원래대로 유지되고 호출자가 롤백할지 또는 트랜잭션을 커미트할지 선택해야 합니다. 트랜잭션이 일정 지점에서 롤백되는 경우 트랜잭션 내에서 수행된 모든 스케줄러 조작도 롤백됩니다.

로컬 트랜잭션 컨텍스트가 있으면 이 컨텍스트는 일시중단되고 새 글로벌 트랜잭션 컨텍스트가 시작합니다. 마찬가지로, 활성인 트랜잭션 컨텍스트가 없는 경우 글로벌 트랜잭션 컨텍스트가 시작합니다. 두 가지 경우 모두, 예기치 못한 예외가 생기면 트랜잭션은 롤백됩니다. 선언된 예외가 발생하면 트랜잭션은 커미트됩니다.

다른 스레드가 동시에 문제의 태스크를 수정하면 TaskPending 예외가 발생합니다. 이는 스케줄러가 낙관적으로 데이터베이스를 잠그기 때문입니다. 그런 다음, 호출 애플리케이션이 조작을 재시도할 수 있습니다.

태스크가 현재 실행 중이면 태스크 관리 기능이 차단될 수 있습니다. 스케줄러는 각 태스크가 한 번만 실행될 것을 보증하지 않으므로 태스크는 실행 중인 태스크의 지속 기간 동안 잠겨져 있어야 합니다. 마찬가지로, 관리 기능 중 하나를 사용하여 태스크를 변경했지만 글로벌 트랜잭션을 커미트하지 않은 경우, 이 태스크에 대해 다른 트랜잭션으로부터 실행된 다른 모든 관리 기능은 차단됩니다.

Stateless 세션 Bean 태스크의 TaskHandler.process() 메소드는 자체 상태를 변경할 수 있습니다. 그러나 이 태스크는 스케줄러와 동일한 트랜잭션 내에서 실행 중이어야 합니다. 따라서, 실행 중인 태스크는 필요하거나 필수적인 컨테이너 관리 트랜잭션 유형을 사용하는 경우에만 자체 수정할 수 있습니다. process() 메소드에 신규 필요 트랜잭션 유형이 지정된 경우, 모든 관리 기능은 교착 상태가 됩니다.

스케줄러 API에서 정의하는 모든 메소드는 API 문서에서 설명합니다.


주제 유형을 표시하는 아이콘 개념 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=csch_managetask
파일 이름:csch_managetask.html