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

前回に関連するもの。

またもや 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 では同モジュールが問題なく動作しているため。ふしぎ。