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が見当たらないとかにはならないので、
実行できます。
とそういうわけです。
ばーーーって走り書きなので間違いがあるかもぉ。