SAStrutsのTomcat 6.0.18へのデプロイ失敗
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ファイルが正常にデプロイされ、ブラウザから正常に動作することを確認できました。
めでたし。
動作環境
- OS:Windows Vista
- Tomcat:6.0.18, 5.5.27
- Dolteng:0.36.0
- SAStruts:1.0.4-sp4