12.8.13 リロードの注意事項および制限事項
(1) リロード機能の使用に関する注意事項
- J2EEアプリケーションの削除について
リロードに失敗しているJ2EEアプリケーションを削除する場合は,次のどちらかの方法で削除してください。
- 更新検知によるリロード,またはcjreloadappコマンドによるリロードを再度実行してください。リロードが成功したら,J2EEアプリケーションを停止して削除してください。
- J2EEサーバを再起動したあとで,J2EEアプリケーションを削除してください。
削除後,J2EEアプリケーションを再インポートしてください。
- メモリ不足の発生について
リロード処理では,クラスローダを再作成してクラスをロードし直すため,メモリを多く消費します(消費するメモリ使用量は,J2EEアプリケーションの実装に依存します)。このため,例えば,複数のWebアプリケーションで同時にリロード処理を繰り返すとメモリ不足が発生する可能性があります。また,リロード処理によって不要となったリソースがJavaVMから解放されるタイミングは,JavaVMのガーベージコレクションの実行タイミングに依存します。リクエストのピーク時など,負荷が高いときにリロードを繰り返すと,ガーベージコレクションを実行するタイミングがなく,メモリ不足が発生する可能性が高くなります。
このため,リクエストのピーク時など負荷が高い場合には,リソースの更新は避けてください。
- メソッドキャンセルの実行について
処理中のリクエストの処理が完了しない場合には,J2EEアプリケーション実行時間の監視のメソッドタイムアウトおよびメソッドキャンセルを実行することで,リロード処理を開始できます。メソッドキャンセルを実行しても,処理をキャンセルできない場合には,J2EEサーバを再起動してください。
- 実行待ちとなっているリクエスト処理の再開について
J2EEアプリケーションのリロードでEJBアプリケーションの開始,または停止に失敗した場合,Webアプリケーションのリロード処理開始以降の新規リクエストは実行待ちとなります。実行待ちとなっているリクエスト処理を再開するためには,EJBアプリケーションを更新してリロードを実行し,リロード処理を成功させてください。Webアプリケーションを更新しても,リロードは実行されません。
- J2EEアプリケーションに含まれるRARファイルについて
アプリケーションディレクトリにRARファイルを含めている場合,RARファイルはリロード機能の対象にはなりません。RARファイルを更新した場合は,更新したRARファイルを含むJ2EEアプリケーションを,サーバ管理コマンドを使用して入れ替えてください。サーバ管理コマンドを使用してJ2EEアプリケーションを入れ替える手順については,マニュアル「Cosminexus アプリケーションサーバ 機能解説 運用/監視/連携編」の「5.6 J2EEアプリケーションの入れ替え」を参照してください。
(2) EJBアプリケーション(EJB-JAR)の注意事項
- リロード後にEJBを呼び出す場合には,クライアント側のソースコードでEJBHomeやビジネスインタフェースを取得し直す必要があります。リロード前に取得したインタフェース経由でEJBにアクセスした場合は例外が返ります。また,リロード実行中にEJBにアクセスした場合も例外が返ります。
- リモートインタフェースまたはリモートビジネスインタフェースを入れ替えた場合,クライアント側ではスタブを取得し直す必要があります。
- リロードを実行すると,Stateful Session Beanのクライアントとのセッションの状態は失われます。
(3) EJBアプリケーション(EJB-JAR)の制限事項
- これまでjavax.ejb.TimedObjectインタフェースを実装していなかったEJBで,javax.ejb.TimedObjectインタフェースを実装するように変更して,リロードすることはできません。リロードした場合には,次のようになります。
- 更新検知スレッドは停止させないで,J2EEアプリケーションを停止します。
- 更新を検知した場合,停止したJ2EEアプリケーションは再び開始されます。
- CMRを使用したアプリケーションはリロードできません。
(4) Webアプリケーション(WAR)の注意事項