読者です 読者をやめる 読者になる 読者になる

kurukuru-papaのブログ

主に、ソフトウェア開発に関連したメモを書き溜めたいと思います。

SAStrutsのTomcat 6.0.18へのデプロイ失敗

Java Seasar

SAStrutsを利用して簡単なWebアプリケーションを作成したので、Tomcat 6.0.18へWARファイルを配置しましたが、ロード時に例外が発生し、動作しませんでした。Tomcat 5.5.27だと正常に動作しました。

問題

Tomcat 6.0.18で発生した例外は次です。ログの内容を抜粋します。

2009/05/12 21:58:30 org.apache.catalina.loader.WebappClassLoader validateJarFile
情報: validateJarFile(C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\xxx-0.0.1\WEB-INF\lib\geronimo-servlet_2.4_spec-1.0.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
2009/05/12 21:58:30 org.apache.catalina.loader.WebappClassLoader validateJarFile
情報: validateJarFile(C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\xxx-0.0.1\WEB-INF\lib\servlet-api-2.3.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class

詳細はわからないですが、Tomcatや各ライブラリで使用しているServletバージョンの混在しているのが問題となっているようです。

Tomcat 6.0.18では、Servlet 2.5を使用しています。Dolteng 0.36.0で作成したSAStruts+S2JDBCプロジェクトは、web.xmlを見るとServlet 2.4で作成されているようです。

対策

Tomcat側を対応しServlet 2.4を使用するか、SAStruts+S2JDBCプロジェクト側を対応しServlet 2.5を使用するかの2つの方法があると考えました。バージョンのこだわりはないので、作業が楽な方、Tomcatを5.5.27にしてServlet 2.4を使用することにしました。

すると、今まで例外発生していたWARファイルが正常にデプロイされ、ブラウザから正常に動作することを確認できました。

めでたし。

動作環境