[Seasar-user:14425] Re: [S2Chronos]S2コンポーネントをDIするとスケジュールがはじまらない

takemura [E-MAIL ADDRESS DELETED]
2008年 5月 24日 (土) 02:40:59 JST


加藤 様

竹村です。
丁寧に解説していただきありがとうございます。
イメージしていた仕様と同じでしたので安心しました。
業務系でUnix cron+shellで行っていたものをTeea webアプリ
や単独のJavaで簡単に実装できるのは非常に有益だと思いました。
今後も利用していきたいと思います ^^




Junichi Kato さんは書きました:
> 竹村様
> 加藤です.
> 
> お手数おかけして申し訳ありません.
> もしかしたら,RC1の不具合だったかもしれません(汗
> 
> インラインで回答させていただきます.
> 
> 
> takemura さんは書きました:
>> 加藤 様
>>
>> お返事ありがとうございます。竹村です。
>>
>> RC2で試したところ無事S2のコンポーネントのDIに成功しました。
>> お騒がせ致しました。
>>
>> 動作したので特に問題はないのですがSchedulerConfigurationにセットする
>> パラメータの理解が曖昧なので質問させてください。
>>
>> autoFinish=trueは時間指定等の一回きりのタスク達が全部終わったときに
>> スケジュール事態が停止するということでしょうか?だとすると@CronTrigger
>> のタスクがあればtrueは無視という理解であってますでしょうか
> はい.そのような仕様になっています.
> CronTriggerの場合は,実際にはスケジューラで管理しているスケジュール予定
> のコレクションからタスクが削除されないので,タスクの総数が0にならず
> autoFinishが機能しない状況となります.
> 
> 
>>
>> taskScanIntervalTimeについて
>> いろんなタスククラスがあったとして全タスクがこの時間の間隔で
>> 回される(実行するかしないかは各タスク次第)という理解でよろしいでしょ
>> うか。
>> つまりクーロンの場合、最小の間隔時間以下に指定する必要あり??
>>
> はい.そうです.全タスクをこの時間間隔でチェックしています.
> CronTriggerの場合は1分毎に起動する設定でも,taskScanIntervalTimeが5分毎
> だと5分毎でしか起動がかかりません.
> ですので,CronTriggerで1分毎に起動したければ,taskScanIntervalTimeを1分
> 以下にする必要があります.
> 
>> ThreadPoolType のFIXED, CACHED, SINGLE, SCHEDULEDの役割がわかりません。
>> とりあえずCACHEDで問題ないでしょうか
> スレッドプールはJava5 concurrentパッケージのExecutorsのAPIに関連します.
> http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/concurrent/Executors.html
> CACHEDは,newCachedThreadPoolですので,スレッドプール内にあるスレッドを
> なるべく利用するような設定になります.
> とりあえず,CACHEDで問題ありません.
> この辺の機能も実装がまだ足りない部分があるので,RC3以降で強化する予定です.
> 
> よろしくお願いいたします.
> 
>>
>> ご教授頂けると助かります
>>
>>
>>
>>
>> Junichi Kato さんは書きました:
>>> 竹村様
>>> s2chronosのコミッタの加藤(j5ik2o)です。
>>> はじめまして。ご利用いただきありがとうございます。
>>> 下記の件、早速調査させていただきたいと思います。
>>>
>>>> サイトのマニュアルではS2コンポーネントをDI出来ると書いてありますが何
>>> か 特別な設定が必要なのでしょうか
>>> 手元にRC2しかなかったのでそちらで確認したのですが、DIできているようで
>>> す。
>>>
>>> 調査のために、対象のタスククラス(関連するクラスも含めて)と、diconファ
>>> イ ルをいただくことは可能でしょうか?
>>> よろしくお願いいたします。
>>>
>>> 2008/05/22 1:27 takemura <[E-MAIL ADDRESS DELETED]
>>> <mailto:[E-MAIL ADDRESS DELETED]>>:
>>>
>>> 竹村と申します。
>>>
>>> teedaのwebアプリ上で定期的なバックグランドでのバッチを実行したく
>>> S2Chronos-core-0.0.1-RC1
>>> S2Chronos-extention-0.0.1-RC1 (S2ChronosServletで起動)
>>> を導入したのですが、タスククラスにのSeasarのコンポーネントをDIすると
>>> スケジュールが
>>> はじまらない状態が起きます。S2のコンポーネントをフィールドにDIしないと
>>> 定期的に(chronosCustomize.diconのtaskScanIntervalTimeの間隔?)
>>>
>>> DEBUG 2008-05-22 01:04:51,187 [pool-2-thread-1] HOT deployを開始します
>>> DEBUG 2008-05-22 01:04:51,203 [pool-2-thread-1] HOT deployを終了しました
>>> と出て正常に動作します
>>>
>>>
>>>
>>> 例)
>>> @Task
>>> @CronTrigger(expression = "*/1 * * * *") // 1分ごとに実行
>>> public class BasicATask {
>>>
>>>
>>> public EmpDao empDao; // これがあるだけでスケジュールがはじまら
>>> ない!
>>>
>>>
>>> @NextTask("taskA")
>>> public void initialize(){log.debug()}
>>>
>>> public void doTaskA(){log.debug()}
>>>
>>> public void destroy(){log.debug()}
>>>
>>> }
>>>
>>>
>>> サイトのマニュアルではS2コンポーネントをDI出来ると書いてありますが何
>>> か特別な
>>> 設定が必要なのでしょうか
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Seasar-user mailing list
>>> [E-MAIL ADDRESS DELETED] <mailto:[E-MAIL ADDRESS DELETED]>
>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> Seasar-user mailing list
>>> [E-MAIL ADDRESS DELETED]
>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>> _______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
> 



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