以下の条件をすべて満たす場合に発生します。
- Webアプリケーションが動作するプロセスグループのプロセス多重度を2以上に指定
- Webアプリケーションをプロセスグループに配備する際に次の指定がなく、JSPが事前コンパイルされていない
[otxadminコマンドを使用の場合] 「--precompilejsp=true」の指定
[運用管理コンソールを使用の場合] 「JSPコンパイル」にチェック
- JSPファイルのコンパイル、およびクラスロードの処理においてプロセス間排他のロック解放待ちでタイムアウト(既定値 2秒)が発生
Webアプリケーションをプロセスグループに配備する際にJSPの事前コンパイルを行う設定をしていない場合、JSPへ初回のリクエスト受信時にJSPコンパイルが行われます。
1つのJSPに対して複数クライアントから同時にリクエストを受け付け、それらをプロセスグループ上の別プロセスで処理する場合、複数のプロセス間でJSPコンパイルの処理が衝突しないように排他制御をしています。
後からリクエストを受け付けたプロセスがロック解放待ち時間を超過してタイムアウトすると、
JSPコンパイルが完了したものと誤判断してしまい、その影響でJSPコンパイルの結果であるクラスファイルを
正しく認識できない状態になります。それ以降、そのタイムアウトが発生したプロセスでは、クライアントから
当該JSPにアクセスしてもJSPコンパイルの結果のクラスを見つけられずClassNotFoundExceptionが発生し
クライアントにHTTP500エラーが返却されます。