[Seasar-user:15186] Re: [S2chronos] タスクで例外発生時の動作について

Junichi Kato [E-MAIL ADDRESS DELETED]
2008年 7月 28日 (月) 21:40:50 JST


加藤です.

2008/07/28 19:00 Tetsuya Anzawa <[E-MAIL ADDRESS DELETED]>:
> 安澤です。
> いつもお世話になっております。
>
> 質問攻めで申し訳ありません。

いえいえ,関心を持っていただきありがとうございます.OSSは反響があるのが一番ですからw
こちらも至らないところありますが,がんばりますw

> 以下の点について確認させてください。
>
> 1.あるタスククラスの各タスクグループメソッドで例外が発生した(を返却した)場合の動作仕様。
>   (タスクフロー制御や、タスク監視がどうなるか、など)

タスクメソッドおよびタスクグループメソッドから外部(つまりスケジューラ)に例外がスローされると,
SchedulerEventListener#exceptionTaskに通知されます.これはRC6まで.
うーん,ちょっとこれはリスナーをわざわざ登録するのは面倒だと思いますので,RC7からタスククラスにexceptionプロパティがあるとDIするようにします.(問題なければSNAPSHOTを発行しますよ)
例外がスローされた後は,以後のタスクメソッドやタスクグループメソッドは実行されず,destroyメソッドが呼びだされてタスクの一連の処理は終了します.

タスクの監視は,isReScheduleTaskを返すタスクなら例外が発生した後でも再度監視が開始されます.


> 2.タスククラス、トリガクラス、スケジューラクラスのライフサイクル

タスククラスとスケジューラは,S2によって管理されているシングルトンなインスタンスですので,ライフサイクルはコンテナ任せです.
トリガーについては,アノテーションでトリガーを指定した場合はスケジューラ内部でトリガーのインスタンスを生成します.
タスクの実行が終了し,スケジュールがない状態になると,ある一定時間を経て,生成されたトリガーのインスタンスを消去します.
タスククラスの中で,トリガーを独自にnewした場合はVM任せです.
また,ルートパッケージ+trigger.XXXXTriggerとして,SMART deploy管理下に置いた場合は,基本的にはシングルトンとなります.

>
> 3.タスク処理中は、タスク監視が行われない仕様なので、こちらで2重起動制御をする必要って
>  基本的にないですよね。

はい.二重起動はできない仕様となっています.


>
>
>
> 以上、宜しくお願い致します。
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>



-- 
/**
 * name : Junichi Kato
 * email : [E-MAIL ADDRESS DELETED]
 *
 * blog : http://d.hatena.ne.jp/j5ik2o/
 *
 * commiting projects :
 * http://jiemamy.org/
 * http://s2chronos.sandbox.seasar.org/
 * http://s2config.sandbox.seasar.org/
 */


Seasar-user メーリングリストの案内