[Seasar-user:21571] Re: s2chronosのタスク起動について

Naoki Takezoe [E-MAIL ADDRESS DELETED]
2013年 3月 20日 (水) 14:48:38 JST


竹添です。

タスクをjp.test.s2chronos.taskパッケージに作成されていますが
ルートパッケージがappになっているのでタスククラスの検出に
失敗しているのではないかと思います。

S2Chronosはルートパッケージ.taskパッケージからクラス名の
末尾が~Taskのクラスをタスクとして検出するはずなので、
タスクをapp.taskパッケージに作成するか、
convention.diconに「jp.test.s2chronos」をルートパッケージとして
追加してみてはいかがでしょう。

2013年3月20日 8:02 Funa <funa @ swrmt.sakura.ne.jp>:
> こんにちは。
> s2chronosのインストー ルを試みているのですが、
> 良いチュートリアルのページが見つからず、質問させてください。
>
> http://d.hatena.ne.jp/gungnir_odin/20100421/1271856739
> ページを参考に、SAStruts+S2JDBC+S2Chronosの組込みを試みています。
>
> ◆以下、手順です。
> 1.プロジェクトをDoltengで作成。
>   SAStruts+S2JDBC+Tomcatプラグイン
>
> 2.src/main/webapp/WEB-INF/libに以下のjarを追加・ビルドパス追加。
>   s2chronos-core-1.0.0.jar
>   s2chronos-extension-1.0.0.jar
>
> 3.src/main/resources/chronosCustomize.diconを追加。
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
> "http://www.seasar.org/dtd/components24.dtd">
>  <components>
>   <component name="schedulerConfiguration"
> class="org.seasar.chronos.core.SchedulerConfiguration">
>    <property name="daemon">true</property> <property
> name="autoFinish">false</property>
>    <property name="autoFinishTimeLimit">5000L</property>
>    <property name="taskScanIntervalTime">30000L</property>
>    <property
> name="threadPoolType">@org.seasar.chronos.core.ThreadPoolType @ CACHED</property>
>   </component>
>  </components>
>
> 4.src/main/resources/creator.diconを編集。   ←追加
>     <component class="org.seasar.chronos.core.creator.TaskCreator"/>
>     <component class="org.seasar.chronos.core.creator.TriggerCreator"/>
>
> 5.src/main/resources/customizer.diconを編集。  ←追加
>      <component name="taskSupportAspectCustomizer"
> class="org.seasar.framework.container.customizer.AspectCustomizer">
> <initMethod name="addInterceptorName"> <arg>"aop.traceInterceptor"</arg>
> </initMethod> <property name="pointcut">"do.*, initialize,
> destroy"</property> </component> <component name="taskCustomizer"
> class="org.seasar.framework.container.customizer.CustomizerChain">
> <initMethod name="addCustomizer"> <arg>taskSupportAspectCustomizer</arg>
> </initMethod> </component> <component name="triggerSupportAspectCustomizer"
> class="org.seasar.framework.container.customizer.AspectCustomizer">
> <initMethod name="addInterceptorName"> <arg>"aop.traceInterceptor"</arg>
> </initMethod> <property name="pointcut">".*"</property> </component>
> <component name="triggerCustomizer"
> class="org.seasar.framework.container.customizer.CustomizerChain">
> <initMethod name="addCustomizer"> <arg>triggerSupportAspectCustomizer</arg>
> </initMethod> </component>
>
> 6.src/main/resources/app.diconを編集。
> <components>
>   <include path="convention.dicon"/>
>   <include path="aop.dicon"/>
>   <include path="j2ee.dicon"/>
>   <include path="s2jdbc.dicon"/>
> <include path="chronos-extension.dicon"/>  ←追加
>   <component name="actionMessagesThrowsInterceptor"
> class="org.seasar.struts.interceptor.ActionMessagesThrowsInterceptor"/>
> </components>
>
> 7.src/main/webapp/WEB-INF/web.xmlに以下を追加。
> <servlet> <servlet-name>chronosServlet</servlet-name>
> <servlet-class>org.seasar.chronos.extension.servlet.S2ChronosServlet</servlet-class>
> <load-on-startup>3</load-on-startup> </servlet>
>
> 8.サンプルTaskクラスの作成。
> package jp.test.s2chronos.task;
> import org.seasar.chronos.core.annotation.task.Task;
> import org.seasar.chronos.core.annotation.trigger.CronTrigger;
> @Task
> @CronTrigger(expression = "0 */1 * * * ?")
> public class SampleTask {
>  public void doExecute() {
>   System.out.println("CronTriggerが1分ごとに実行さ れます。");
>  }
> }
>
> 9.Tomcat起動。
>
>
> ◆この手順で実行した場合、コンソールを見ると確かにスケジューラが起動しているように思うのですが、
>  作成したサンプルのTaskが実行されません。上記8の手順で作成したクラスを定義しないといけないのでしょうか?
>  下記が起動ログです。
>
> INFO  2013-03-20 07:21:54,667 [main] Loading validation rules file from
> '/WEB-INF/validator-rules.xml'
> INFO  2013-03-20 07:21:54,787 [main] s2-frameworkのバージョンは2.4.43です。
> INFO  2013-03-20 07:21:54,787 [main] s2-extensionのバージョンは2.4.43です。
> INFO  2013-03-20 07:21:54,787 [main] s2-tigerのバージョンは2.4.43です。
> DEBUG 2013-03-20 07:21:54,887 [main] 環境変数#Envにファイル(env.txt)から値(ct)が設定されました
> DEBUG 2013-03-20 07:21:54,957 [main] S2Containerを作成します。path=hotdeploy.dicon
> DEBUG 2013-03-20 07:21:54,967 [main] S2Containerを作成します。path=convention.dicon
> DEBUG 2013-03-20 07:21:55,117 [main]
> S2Containerを作成しました。path=convention.dicon
> DEBUG 2013-03-20 07:21:55,117 [main] S2Containerを作成します。path=customizer.dicon
> DEBUG 2013-03-20 07:21:55,127 [main]
> S2Containerを作成します。path=default-customizer.dicon
> DEBUG 2013-03-20 07:21:55,127 [main]
> S2Containerを作成します。path=std-customizer.dicon
> DEBUG 2013-03-20 07:21:55,137 [main]
> S2Containerを作成します。path=std-customizer-tiger.dicon
> DEBUG 2013-03-20 07:21:55,177 [main]
> S2Containerを作成しました。path=std-customizer-tiger.dicon
> DEBUG 2013-03-20 07:21:55,187 [main]
> S2Containerを作成しました。path=std-customizer.dicon
> DEBUG 2013-03-20 07:21:55,197 [main]
> S2Containerを作成しました。path=default-customizer.dicon
> DEBUG 2013-03-20 07:21:55,217 [main]
> S2Containerを作成しました。path=customizer.dicon
> DEBUG 2013-03-20 07:21:55,217 [main] S2Containerを作成します。path=creator.dicon
> DEBUG 2013-03-20 07:21:55,247 [main] S2Containerを作成しました。path=creator.dicon
> DEBUG 2013-03-20 07:21:55,247 [main] S2Containerを作成しました。path=hotdeploy.dicon
> DEBUG 2013-03-20 07:21:55,297 [main] S2Containerを作成します。path=app.dicon
> DEBUG 2013-03-20 07:21:55,297 [main] S2Containerを作成します。path=convention.dicon
> DEBUG 2013-03-20 07:21:55,317 [main]
> S2Containerを作成しました。path=convention.dicon
> DEBUG 2013-03-20 07:21:55,317 [main] S2Containerを作成します。path=aop.dicon
> DEBUG 2013-03-20 07:21:55,357 [main] S2Containerを作成しました。path=aop.dicon
> DEBUG 2013-03-20 07:21:55,357 [main] S2Containerを作成します。path=j2ee.dicon
> DEBUG 2013-03-20 07:21:55,357 [main] S2Containerを作成します。path=jta.dicon
> DEBUG 2013-03-20 07:21:55,387 [main] S2Containerを作成しました。path=jta.dicon
> DEBUG 2013-03-20 07:21:55,387 [main] S2Containerを作成します。path=jdbc.dicon
> DEBUG 2013-03-20 07:21:55,417 [main] S2Containerを作成しました。path=jdbc.dicon
> DEBUG 2013-03-20 07:21:55,417 [main] S2Containerを作成しました。path=j2ee.dicon
> DEBUG 2013-03-20 07:21:55,417 [main] S2Containerを作成します。path=s2jdbc.dicon
> DEBUG 2013-03-20 07:21:55,427 [main]
> S2Containerを作成します。path=s2jdbc-internal.dicon
> DEBUG 2013-03-20 07:21:55,437 [main]
> S2Containerを作成しました。path=s2jdbc-internal.dicon
> DEBUG 2013-03-20 07:21:55,497 [main] S2Containerを作成しました。path=s2jdbc.dicon
> DEBUG 2013-03-20 07:21:55,497 [main]
> S2Containerを作成します。path=chronos-extension.dicon
> DEBUG 2013-03-20 07:21:55,497 [main]
> S2Containerを作成します。path=chronos-core.dicon
> DEBUG 2013-03-20 07:21:55,507 [main]
> S2Containerを作成します。path=chronos-base.dicon
> DEBUG 2013-03-20 07:21:55,518 [main]
> S2Containerを作成します。path=chronosCustomize.dicon
> DEBUG 2013-03-20 07:21:55,518 [main]
> S2Containerを作成しました。path=chronosCustomize.dicon
> DEBUG 2013-03-20 07:21:55,618 [main]
> S2Containerを作成しました。path=chronos-base.dicon
> DEBUG 2013-03-20 07:21:55,678 [main]
> S2Containerを作成しました。path=chronos-core.dicon
> DEBUG 2013-03-20 07:21:55,678 [main]
> S2Containerを作成しました。path=chronos-extension.dicon
> DEBUG 2013-03-20 07:21:55,678 [main] S2Containerを作成しました。path=app.dicon
> DEBUG 2013-03-20 07:21:56,108 [main] BEGIN
> org.seasar.chronos.core.impl.SchedulerImpl#setSchedulerConfiguration(org.seasar.chronos.core.SchedulerConfiguration @ 1461b5b)
> DEBUG 2013-03-20 07:21:56,108 [main] END
> org.seasar.chronos.core.impl.SchedulerImpl#setSchedulerConfiguration(org.seasar.chronos.core.SchedulerConfiguration @ 1461b5b)
> : null
> INFO  2013-03-20 07:21:56,118 [main] Running on [ENV]ct, [DEPLOY MODE]Hot
> Deploy
> DEBUG 2013-03-20 07:21:56,128 [main] BEGIN
> org.seasar.chronos.core.impl.SchedulerImpl#start()
> DEBUG 2013-03-20 07:21:56,138 [main] スケジューラ を 開始します.
> WARN  2013-03-20 07:21:56,138 [main]
> ルートパッケージ(app.task)に対応するリソースがクラスパスから見つかりませんでした。
> DEBUG 2013-03-20 07:21:56,138 [main] スケジューラ を 開始しました.
> DEBUG 2013-03-20 07:21:56,138 [main] END
> org.seasar.chronos.core.impl.SchedulerImpl#start() : null
>
> ご教示頂ければ幸いです。よろしくお願い致します。
>
> _______________________________________________
> Seasar-user mailing list
> Seasar-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-user
>



--
Naoki Takezoe


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