S2Chronosを動かす サンプル編

ちょっと時間で起動するようにした面白いものができるかなと思って使ってみようかなと思った。


s2chronos


サンプルを落とす。
俺はsa-strutsをがっつりなので、
ダウンロードから、

s2chronos-sastruts-example-1.0.0.zip
SAStrutsを使ったS2Chronosのサンプル(dbsessionのセッションタイマー実装)

を保存。


Eclipseアーカイブを読み込ませる。
pom.xmlはあるので、
mvnを起動。

mvn -e install dependency:copy-dependencies

いったんはWEB-INF/libにjarがあればいいので、
dependency:copy-dependenciesを指定

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-dependency-plugin</artifactId>
	<version>2.0</version>
	<executions>
		<execution>
			<goals>
				<goal>copy-dependencies</goal>
			</goals>
			<configuration>
				<outputDirectory>src/main/webapp/WEB-INF/lib</outputDirectory>
				<excludeScope>provided</excludeScope>
				<overWriteIfNewer>true</overWriteIfNewer>
				<overWriteReleases>true</overWriteReleases>
				<overWriteSnapshots>true</overWriteSnapshots>
			</configuration>
		</execution>
	</executions>
</plugin>

オプションはこの辺だけでいいかな。
installとかpackageとかはよく分からんけど、
これで必要なところにコピーされたので良しとする。


次の問題は、クラスパスにjarがないと。

プロジェクト 's2chronos-sastruts-example' に、必要なライブラリー 'D:\repo\org\seasar\chronos\s2chronos-core\0.0.1-RC7-SNAPSHOT\s2chronos-core-0.0.1-RC7-SNAPSHOT.jar' がありません
プロジェクト 's2chronos-sastruts-example' に、必要なライブラリー 'D:\repo\org\seasar\chronos\s2chronos-extension\0.0.1-RC7-SNAPSHOT\s2chronos-extension-0.0.1-RC7-SNAPSHOT.jar' がありません

ですって。


あー、クラスパスがmavenによって書き換わっていないのか。

mvn -e install dependency:copy-dependencies eclipse:eclipse

mavenを起動しなおし。
おっけーおっけー。


JSPコンパイルエラーが出る(Amateras)けど、むしむし。
いったんはWEBから見ないし。


次は、tomcatの設定を
プロパティからコンテキスト名を設定。
Webアプリケーション・ルートとするサブディレクトリーを

/src/main/webapp/

に。


tomcatを起動。

org.seasar.framework.beans.PropertyNotFoundRuntimeException: [ESSR0065]クラス(org.seasar.chronos.core.SchedulerConfiguration)のプロパティ(hotdeployDisabled)が見つかりません
	at org.seasar.framework.beans.impl.BeanDescImpl.getPropertyDesc(BeanDescImpl.java:132)
	at org.seasar.framework.container.assembler.AccessTypePropertyDef.bind(AccessTypePropertyDef.java:48)
	at org.seasar.framework.container.assembler.AccessTypePropertyDef.bind(AccessTypePropertyDef.java:41)
	at org.seasar.framework.container.assembler.AutoPropertyAssembler.assemble(AutoPropertyAssembler.java:56)
	at org.seasar.framework.container.deployer.SingletonComponentDeployer.assemble(SingletonComponentDeployer.java:68)
	at org.seasar.framework.container.deployer.SingletonComponentDeployer.deploy(SingletonComponentDeployer.java:48)
	at org.seasar.framework.container.deployer.SingletonComponentDeployer.init(SingletonComponentDeployer.java:76)
	at org.seasar.framework.container.impl.ComponentDefImpl.init(ComponentDefImpl.java:236)
	at org.seasar.framework.container.impl.S2ContainerImpl.init(S2ContainerImpl.java:563)
	at org.seasar.framework.container.impl.S2ContainerImpl.init(S2ContainerImpl.java:560)
	at org.seasar.framework.container.impl.S2ContainerImpl.init(S2ContainerImpl.java:560)
	at org.seasar.framework.container.impl.S2ContainerImpl.init(S2ContainerImpl.java:560)
	at org.seasar.framework.container.impl.S2ContainerImpl.init(S2ContainerImpl.java:560)
	at org.seasar.framework.container.factory.SingletonS2ContainerFactory.init(SingletonS2ContainerFactory.java:150)
	at org.seasar.framework.container.servlet.SingletonS2ContainerInitializer.initialize(SingletonS2ContainerInitializer.java:55)
	at org.seasar.framework.container.servlet.S2ContainerServlet.initializeContainer(S2ContainerServlet.java:139)
	at org.seasar.framework.container.servlet.S2ContainerServlet.init(S2ContainerServlet.java:127)
	at javax.servlet.GenericServlet.init(GenericServlet.java:212)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1172)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4371)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
	at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:627)
	at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553)
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488)
	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1149)
	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
	at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
	at org.apache.catalina.core.StandardService.start(StandardService.java:516)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

これがでて起動できない。
正直、これは本当にふざけた理由。
公式からサンプルダウンロードしたのに、
プロパティ名間違ってるって何なの?w


org.seasar.chronos.core.SchedulerConfiguration
を見ると、

private boolean hotdeployDisable;

「d」ねーじゃんwww


chronosCustomize.dicon
の記述を修正。

<property name="hotdeployDisabled">true</property>

<property name="hotdeployDisable">true</property>

に。


起動しました。

DEBUG 2010-11-23 18:34:30,375 [chronos-pool-1-daemonthread-1] cronExpression = 0 */1 * * * ?
DEBUG 2010-11-23 18:34:30,375 [chronos-pool-1-daemonthread-1] cronExpression = 0 */5 * * * ?
DEBUG 2010-11-23 18:34:30,375 [chronos-pool-1-daemonthread-1] cronExpression = 0 */1 * * * ?
DEBUG 2010-11-23 18:34:30,375 [chronos-pool-1-daemonthread-1] cronExpression = 0 */1 * * * ?

このログが出ているのと、
デバッグウィンドウに、
chronos-pool-*thread
とか
chronos-pool-1-daemonthread-*
とか
のプロセスが動いているので、
これでタスクが動くのは間違いないでしょう。


いったんサンプルを動かしてみたらこんな感じ。