SA-Strutsをバッチとして起動する時の注意点

注意点というか、実際に動かしてみると分かるけど、
ServletRequestが無いとか言われることがある。


Eclipse上では動くのに、サーバーにインスコしたwarでは起動できない。
それは何故か…。


それはSA-StrutsがWEBアプリケーションであるからである。
しかもTomcat用(?)のね。


Tomcatとしてのアプリ開発といえばGeronimo-Servlet
http://oreryu.eco.to/zairyo/orekin-gazo/geronimo-gazo1.gif
そうそう、これこれw


geronimo-servletといえばtomcatのライブラリのモック(多分)
WEBアプリだったらTomcatの下で動かすから、
TomcatのライブラリがあるのでServletRequestなどの専門のクラスがあるからいいけど、
バッチとしてスタンドアロンで起動する場合には、tomcatのもってるライブラリが無いので、
Geronimoをそのまま一緒に持っていってあげる必要がある。


最近のDoltengの設定(?)で生成したpom.xmlだと
geronimo-servletがprovidedになっているはず。

<dependency>
	<groupId>org.apache.geronimo.specs</groupId>
	<artifactId>geronimo-servlet_2.4_spec</artifactId>
	<version>1.0</version>
	<scope>provided</scope>
</dependency>

それとmvnでいつも指定しているオプション

mvn ... 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>

となってて、provvidedを排除するようになっているなら、
dependencyのprovidedを消そう

<dependency>
	<groupId>org.apache.geronimo.specs</groupId>
	<artifactId>geronimo-servlet_2.4_spec</artifactId>
	<version>1.0</version>
</dependency>

そうするとlibに含まれるから、
ServletRequestが見当たらないとかにはならないので、
実行できます。


とそういうわけです。
ばーーーって走り書きなので間違いがあるかもぉ。