The number of lines in the generated _jspService method or doTag method has exceeded 1000. (J2EE application = aa....aa, context root = bb....bb, file = cc....cc, number of lines = dd....dd)
- aa....aa:J2EEサーバモードの場合はJ2EEアプリケーション名,サーブレットエンジンモードまたはcjjspcコマンドまたはcjjsp2javaコマンドの場合は空文字列
bb....bb:J2EEサーバモードまたはサーブレットエンジンモードの場合はコンテキストルート名,cjjspcコマンドまたはcjjsp2javaコマンドの場合は空文字列
cc....cc:このJSPファイルまたはタグファイルのWebアプリケーション内のパス,cjjsp2javaコマンドではJSPファイルの絶対パス(ただし,JARファイルに格納されたタグファイルの場合,次の書式で出力される。「JARファイルのWebアプリケーション内のパス(entry = <JARファイル内のパス>)」)
dd....dd:生成された_jspServiceメソッドまたはdoTagメソッドの空行やコメント行を含めた行数
- 説明
- J2EEサーバモードまたはcjjspcコマンドの場合
- JSPファイルまたはタグファイルから生成された_jspServiceメソッドまたはdoTagメソッドの行数がコメントおよび空行を含めて1000行を超えました。
- サーブレットエンジンモードまたはcjjsp2javaコマンドの場合
- JSPファイルから生成された_jspServiceメソッドの行数が,コメントおよび空行を含めて1000行を超えました。
- 対処
- Java仮想マシン仕様から,1メソッドのバイトコードは64キロバイト以内にする必要があります。64キロバイトを超える場合は,クラスファイル生成時にエラーとなるか,クラスのロード時にjava.lang.LinkageError例外が発生します。
- また,1メソッドの大きさが64キロバイト以内であっても,非常に大きい場合は,次の弊害が発生する可能性があります。
- GC処理の実行に非常に時間がかかる。
- JITコンパイルに非常に時間がかかる。
- JITコンパイルに非常に多くのメモリを消費する。
- そのため,Javaソース上の1メソッドの大きさは,コメントや空行を除き,およそ500行以内を推奨します。
- JSPから生成されるJavaコードの行数の縮小は,次のようにJSPを変更することで可能です。
- JSPファイルの場合
- 動的インクルード(インクルードアクション)によってJSPファイルを分割する。
- タグファイルの場合
- JSPファイルから使用するタグファイルを複数のタグファイルに分割するか,タグファイルから別のタグファイルを呼び出すように分割する。
All Rights Reserved. Copyright (C) 2008, 2011, Hitachi, Ltd.