WebSphere Application Server for z/OS, Version 6.0.x   
             オペレーティング・システム: z/OS

             目次と検索結果のパーソナライズ化

スケジューラーを使用したタスク管理メソッド

スケジューラーは、いくつかのタスク管理メソッドを備えています。

スケジューラーに対して 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 例外がスローされます。 これは、スケジューラーがデータベースをオプティミスティックにロックするためです。その後、呼び出し元のアプリケーションは、操作を再試行できます。

タスクが現在実行中の場合には、タスク管理機能がブロックすることがあります。 スケジューラーによって各タスクが一度だけ実行されるため、タスクの実行中には他のタスクをロックする必要があります。 同様に、管理機能の 1 つを使用してタスクを変更したにもかかわらず、グローバル・トランザクションがコミットされない場合も、そのタスクの 別のトランザクションから発行された他の管理機能がすべてブロックされます。

Stateless Session Bean タスクの TaskHandler.process() メソッドは、自身の状態を変更できます。 ただし、このタスクは、スケジューラーと同じトランザクション内で実行する必要があります。したがって、 実行中のタスクに変更を加える ことができるのは、コンテナー管理トランザクション・タイプとして、Required または Mandatory を 使用している場合のみです。Requires New トランザクション・タイプが process() メソッドに指定されている場合には、すべての管理機能が デッドロックします。

スケジューラー API によって定義されているすべてのメソッドについて詳しくは、API 文書を参照してください。




関連タスク
Session Bean を呼び出すタスクの開発
Java Message Service メッセージを送信するタスクの開発
スケジューラー通知の受信
スケジューラーの管理
関連資料
スケジューラー・インターフェース
API 資料
概念トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 10:52:11 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.zseries.doc/info/zseries/scheduler/concepts/csch_managetask.html