Corredor

ウェブ、プログラミングの勉強メモ。

Tomcat7 は巨大な JSP が動作しない

Tomcatハンドブック 第2版

Tomcatハンドブック 第2版

neos21.hatenablog.com

前回に関連するもの。

またもや Tomcat 5 から 7 に環境だけ変えたところ、エラーが発生する JSP があった。

以下の参考ページにあるスタックトレースと同様のものが表示される。

An error occurred at line: [264] in the generated java file: [D:\apache-tomcat-7.0.54\work\SampleApp\org\apache\jsp\WEB_002dINF\jsp\Sample01_jsp.java]
The code of method _jspService(HttpServletRequest, HttpServletResponse) is exceeding the 65535 bytes limit

JVM の仕様で、JSP のサイズが 65535 バイトを超えるとコンパイルができないっぽい。

どうやら1メソッドが 65535 バイトを超えると、ってことらしくて、JSP の場合はコンパイルのされ方によって内部で1メソッドあたりの分量が変わるみたい。だから単純な JSP のファイルサイズや行数で問題が起こる・起こらないの境界線を引けないっぽい (当然、1ファイルあたりのコード行数が多い JSP は注意したいところだが)。

以下のサイトに web.xml に載せると改善できるプロパティが紹介されているが、自環境では改善できず。

ひとまず断念状態。というのも、Tomcat 7 では色々と不都合が起こっているが、実際に動作させたい WebLogic 12c では同モジュールが問題なく動作しているため。ふしぎ。