[Seasar-user:21480] Re: 【S2Chronos】複数のタスクからのCronTrigger登録について

太田浩一 [E-MAIL ADDRESS DELETED]
2012年 9月 28日 (金) 18:04:23 JST


関口さん

太田といいます。

ソースコードからのトレースとなりますが、
CCronTriggerはsetExpressionが行なわれていないと
NullPointerExceptionが発生する実装であるように見えます。
(CCronTrigger#isStartTask参照)
http://www.seasar.org/source/browse/sandbox.s2chronos/trunk/s2chronos-core/src/main/java/org/seasar/chronos/core/model/trigger/CCronTrigger.java

isStartTaskがtrueを返したらタスクが実行されるようなので、
S2ChronosがisStartTaskをコールしているものと思います。
S2Chronosの動作中で例外が発生していないか確認してみてはどうでしょうか。


以上、よろしくお願いします。


> お世話になっております。
> 関口と申します。
>
> 現在、複数タスククラスの処理をS2Chronosにて
> スケジューリング実行しようと考えています。
> スケジュール情報は、プロパティファイルに定義しておき、
> Initializse()メソッド内でCronTriggerに登録して
> 実行しようとしています。
>
> 全てのタスククラスでプロパティファイルから取り出した
> スケジュール情報を登録すると全てのタスククラスが動作する
> のですが、どれか1つでも登録しないと全ての
> タスクが動作しなくなってしまいます。
> 以下に実装例を挙げさせて頂きますので、
> 何か実装方法に問題があるようでしたら
> ご教示をお願いします。
>
> ■s2Chronosライブラリ
> ・s2chronos-core-1.0.0.jar
> ・s2chronos-extention-1.0.0.jar
>
> ■s2Chronos.properties(トリガー情報を定義する自作プロパティファイル)
> #タスクA
> TESTA=0 */1 * * * ?
> # タスクB
> TESTB=30 */1 * * * ?
>
> ★共に有効にしておくと正常動作するが、どちらかを
>  コメント化すると全タスククラスが動作しなくなる。
>
> ■タスクA、B(TestA⇒TestB、TESTA⇒TESTBのみ差分)
> @Task
> public class TestATask {
>   // トリガー
>   private CCronTrigger trigger = new CCronTrigger();
>
>   public void initialize() {
>     // プロパティファイルからスケジュール情報取得
>     String cronStr =
> ResourceUtil.getProperties("s2Chronos.properties").getProperty("TESTA");
>     if (cronStr != null) {
>       // Chronosスケジューラにスケジュール登録
>       this.trigger.setExpression(cronStr);
>     } else {
>       // ERRORログ出力
>     }
>
>   @NextTask("Test11")
>   public void start() {
>     // INFOログ出力
>   }
>
>   public void doTest11() {
>     // INFOログ出力
>   }
> }
>
>
> 以上、宜しくお願いします。
>
> _______________________________________________
> Seasar-user mailing list
> Seasar-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-user
>



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