LoginSignup
4
3

More than 5 years have passed since last update.

古いWebアプリを最近の環境で動かす時のひとつの可能性

Posted at

経緯

最近かなりハマった内容を書きます。数年前に開発した Java + struts の Web アプリケーションを最近の環境(Java8 + Tomcat8)へ移行した際のこと。JSP が真っ白のまま何も表示されませんでした。

解析

${TOMCAT_HOME}/logs/localhost.yyyy-mm-dd.log を見たら、エラーが出ていました。

The method getDispatcherType() is undefined for the type HttpServletRequest

直訳すると「HttpServletRequest 型では getDispatcherType() メソッドは未定義なんだぜ」ということです。なんでこんなエラーが出たのかというと、

  • なぜかサーブレットの jar ファイルを自分のアプリケーションの中に抱え持っていた。
  • この jar ファイルが古かった(サーブレット 2.5 の時代のもの)。
  • JSP から *.java ファイルの変換は新しい Tomcat がやった(と思っている)。
  • *.java から *.class へのコンパイル時は抱え持っていた古いサーブレットの jar ファイルが参照された。
  • よって新しいメソッド getDispatcherType() が古いサーブレットの jar ファイルでコンパイルできず。

対応

新しい jar に入れ替えた。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3