以下について説明します。
リソース検証の注意事項
デフォルトでは、アプリケーションが使用する各リソースは、アプリケーション配備時に検証されます。これにより、全てのリソースが事前に作成されていることが保証されます。
配備時にリソースが利用可能でない場合は、以下のようなメッセージが出力され、配備に失敗します。これは Eclipse GlassFish V5で追加された機能です。
JNDI lookup failed for the resource: <略>
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です。 |
deployment descriptorの注意事項
デフォルトでは、アプリケーションに同梱されているdeployment descriptorの定義は、アプリケーション配備時に検証されます。
配備時に不正なdeployment descriptorの定義が検出された場合は、以下のようなメッセージが出力され、配備に失敗します。これは Eclipse GlassFish 7.0.3で追加された機能です。
Exception during lifecycle processing java.lang.IllegalStateException: Descriptor not available in <略>
Exception during lifecycle processing java.lang.IllegalArgumentException: Failed setNumber when tried to set 'abc' to the descriptor <略>
配備時に不正なdeployment descriptorの定義が検出されても配備を継続するためには、以下のJava VMオプション(またはシステムプロパティ)をfalseに設定してください。GlassFish Serverクラスターを利用する場合は、DASとGlassFish Serverクラスターに対して設定し、Jakarta EEアプリケーションクライアントを利用する場合は、appclientコマンド実行時に指定してください。
プロパティ名 | 説明 |
---|---|
deployment.descriptor.strict.validation | trueまたはfalseを指定します。アプリケーション配備時にdeployment descriptorを検証する場合、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使用率が増加します。
リロード直前のアプリケーションが保有するセッション情報は破棄されます。
アプリケーションの入れ替え中はリクエストを受け付けることができません。