以下について説明します。
リソース検証の注意事項
デフォルトでは、アプリケーションが使用する各リソースは、アプリケーション配備時に検証されます。これにより、全てのリソースが事前に作成されていることが保証されます。
配備時にリソースが利用可能でない場合は、以下のようなメッセージが出力され、配備に失敗します。これは Eclipse GlassFish V5で追加された機能です。
[20XX-10-10T15:00:50.100+0900] [glassfish 5.1] [SEVERE] [AS-DEPLOYMENT-00026] <略> JNDI lookup failed for the resource: <略>
[20XX-10-10T15:00:50.400+0900] [glassfish 5.1] [SEVERE] [NCLS-CORE-00026] <略> Exception during lifecycle processing org.glassfish.deployment.common.DeploymentException: JNDI lookup failed for the resource: <略>
リソースが利用できないときにアプリケーションを配備するためには、以下のJava VMオプション(またはシステムプロパティ)をfalseに設定してください。
ただし、アプリケーション実行時に依然リソースが利用できない場合には、アプリケーションでエラーが発生することがあります。
プロパティ名 | 説明 |
---|---|
deployment.resource.validation | trueまたはfalseを指定します。アプリケーション配備時にリソースを検証する場合、trueを設定します。省略値はtrueです。 |
HotDeploy機能使用時の注意事項
通常業務中のHotDeploy機能は、以下のような問題があるため、推奨しません。夜間などリクエストが少ない状況で利用してください。
EJBアプリケーションでリクエストを処理中にHotDeployを実行した場合、以下のメッセージがサーバーログに出力されることがあります。
EJB6145
Webアプリケーションでリクエストを処理中にHotDeployを実行した場合、以下のメッセージを含むjava.lang.IllegalStateExceptionがスローされることがあります。({0}: リソース名)
WebappClassLoader unable to load resource [{0}], because it has not yet been started, or was already stopped
実装に問題がないアプリケーションを配備した時に以下のようなエラーが発生する場合は、GlassFish Serverクラスター内で不整合が発生している可能性があるため、GlassFish Serverクラスターを再起動してください。
java.lang.ClassNotFoundException
javax.naming.NameAlreadyBoundException
javax.naming.InvalidNameException
EJBクライアントを含むWARファイルのHotDeployを実行した場合、javax.naming.NamingExceptionが発生し、サーバアプリケーションの呼出しに失敗します。EJBクライアントを含むWARファイルのHotDeployは実施しないでください。
ライブラリ(--librariesオプション)指定文字列の注意事項
以下の指定は行わないでください。
2Byte文字
最後尾に空白文字(スペース、タブ)
アプリケーションのファイル名の注意事項
アプリケーション名(--nameオプション)に以下の文字を指定してください。
英数字または特殊文字(‘-’、‘_’、‘.’)
先頭には、英数字または‘_’だけが指定可能
オートリロード機能使用時の注意事項
配備モジュールのクラスファイルを頻繁に変更して動作確認する開発作業中は、オートリロード機能を使用することで開発効率を向上させることが可能です。
ただし、オートリロード機能は、以下の理由のためアプリケーションの開発時のみ使用してください。
".reload"ファイルの変更を絶えず監視するため、DASのCPU使用率が増加します。
リロード直前のアプリケーションが保有するセッション情報は破棄されます。
アプリケーションの入れ替え中はリクエストを受け付けることができません。