2008/12/23

S2Chronosを改めて使う

S2Chronos

”Seasar2に対応したavaオブジェクトスケジューリングフレームワーク”

��.0になったばかりだけど十分使えます。

バッチ処理のスケジューリングは結構面倒だがこれとSeasarシリーズ使えばかなり工数減りますね^^

0.6のあたりから使わせてもらってますが、落ちずにがんばってくれてます。

で、この間新しいプロジェクトで使う予定で新規にやってみたらはまったので、自分のために備忘録^^;

前提:

Teeda+S2chronosをTomcat5.5で動かしますためにEclipse+Doltengを使います。

必要ファイル:

上記ページダウンロードから下記2つのJarファイルを取得

s2chronos-core-1.0.0.jar
s2chronos-extension-1.0.0.jar

設定開始:

1.Eclipseでプロジェクトを作る

Eclipseで新規プロジェクトー>その他ー>Dolteng->DoltengProjectを選びTeedaのプロジェクトを作る

2.落としてきた2つのJarをプロジェクトに取り込む(ビルドパスに入れる)

3.chronos用のファイル作成

・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">2000L</property>
<property name="threadPoolType">@org.seasar.chronos.core.ThreadPoolType@CACHED</property>
</component>
</components>

・creator.dicon(既存に追加)

<component class="org.seasar.chronos.core.creator.TaskCreator"/>
<component class="org.seasar.chronos.core.creator.TriggerCreator"/>

・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>
・app.dicon(既存に追加)

<include path="chronos-extension.dicon"/>

・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>

ここではまったのよね、WEBから上記の設定をコピーしたりしてやってたんだけど、ぜんぜんChronos起動してくれない^^;

tabとか全角とかまざってたようで、見た目にはわからなかった。気づけば当然なのだが。

4.パッケージ作成

例えば今のパッケージが   hoge だとすれば hoge.task になるようにする。

5.タスクを追加

��で作ったパッケージの下に作る。ファイル名にはTaskをつける。

例:  タスクが起動した時にすぐに実行する。 HogeTask.java

packager hoge.task;

import org.seasar.chronos.core.annotation.task.Task;
import org.seasar.chronos.core.annotation.trigger.NonDelayTrigger;

@Task
@NonDelayTrigger
public class HogeTask {

// タスク処理
public void doExecute() {
System.out.println("test");
}
}

ここまでくればEclipse起動すればS2Chronosがタスクを起動してくれる