Webアプリケーションの配備解除を実行し、配備解除が正常に終了したが、以下のディレクトリにJARファイルが残ったままです。
<WebOTXインストールディレクトリ>\domains\<ドメイン名>\applications\<アプリケーション名>\WEB-INF\lib
※ V8 の場合は、以下のディレクトリになります。
<WebOTXインストールディレクトリ>\domains\<ドメイン名>\applications\j2ee-modules\<アプリケーション名>\WEB-INF\lib
上記JARファイルをエクスプローラから削除しようとすると、JavaVMが使用しているというメッセージが表示され、削除できません。
WebOTXのサービスを停止すると、削除できました。
原因および回避方法について、教えてください。
JAR ファイルが WebOTX のプロセスによってロックされています。
このような状況になった場合は、WebOTX を停止してから、該当の JAR ファイルを削除する必要があります。
JAR ファイルがロックされる原因は、次の 2 つがあります。
原因 1. 配備時に JSP のコンパイルを行うよう指定した場合
配備時に「JSP コンパイル」にチェックを入れる (または --precompilejsp=true を指定する) と、配備時に JSP のコンパイルが行われます。
Windows では、JSP が WEB-INF/lib 内の JAR を参照している場合、配備時に JSP コンパイルを行うと JAR ファイルがロックされます。
回避するには、配備時の JSP コンパイルを行わないか、配備時に JSP コンパイルを行う場合は、配備解除や再配備を行う前に WebOTX を再起動する必要があります。(プロセスを終了させることでロックは解除されます)
原因 2. JAR ファイル内のリソース (*.properties, *.xml など) にアクセスしている場合
アプリケーションや利用しているライブラリが WEB-INF/lib 内の JAR ファイルに含まれるリソースファイルにアクセスしている場合、ファイルのクローズを正しく行っていないと JAR ファイルがロックされることがあります。
また、JAR ファイル内のリソースを指す URL に対して openStream メソッドで InputStream をオープンすると、JarURLConnection によって JAR ファイルがオープンされたままキャッシュされるため、InputStream をクローズしても JAR ファイルがロックされたままになります。
これは、V9.4のマニュアルの以下の箇所に説明があります。
WebOTX V9.4 マニュアル
[ 注意制限事項 > 3. Webコンテナ > 3.1. Webコンテナ 注意事項 > 3.1.4. Webアプリケーションの運用/実行 > 配備解除後にアプリケーションディレクトリ配下のJARファイルが残る場合 ]
回避するには、アプリケーション内でリソースファイルのクローズ漏れを無くす必要があります。
また、該当箇所が既存のライブラリなどで変更ができない場合や JAR ファイルのキャッシュによってオープンされたままになる場合は、Web アプリケーションに antiJARLocking=true を指定する方法があります。
antiJARLocking の設定方法を以下に示します。
[antiJARLocking の設定方法]
方法 1. nec-web.xml に記述する方法
<nec-web-app>
<property name="antiJARLocking" value="true" />
</nec-web-app>
(WAR 内のファイルを編集して、配備し直してください)
方法 2. 運用管理コマンドにより設定する方法
- V9 の場合
otxadmin> set server.applications.web-module.<Webアプリケーション名>.module.<Webアプリケーション名>.engine.web.web-module-config.property.antiJARLocking=true
(ドメイン再起動が必要です)
- V8 の場合
otxadmin> set server.applications.web-module.<Webアプリケーション名>.property.antiJARLocking=true
(ドメイン再起動が必要です)
antiJARLocking の設定方法の詳細については、マニュアルの下記の箇所をご参照ください。
WebOTX V9.4~V9.5 マニュアル
[ マイグレーションガイド > 2. マイグレーションアシスタントを利用しないマイグレーションガイド > 2.5. Tomcat設定項目 > 2.5.1. Tomcat設定項目との対応 > コンテキスト(Standard)> antiJARLocking ]
WebOTX V8.4~V9.3 マニュアル
[ リファレンス集 ドメイン構成・環境移行編 > 2. 他APサーバ(Tomcat)からWebOTXへの移行ガイド > 2.5. Tomcat設定項目 > 2.5.1. Tomcat設定項目との対応 > コンテキスト(Standard)> antiJARLocking ]
WebOTX V8.3 マニュアル
[ リファレンス集 ドメイン構成・環境移行編 > 2. TomcatからWebOTXへの移行ガイド > 2.5. Tomcat設定項目 > 2.5.1. Tomcat設定項目との対応 > コンテキスト(Standard)> antiJARLocking ]
WebOTX V8.1~V8.2 マニュアル
[ 運用編 > 7.運用ガイド > TomcatからWebOTXへの移行ガイド > 4 Tomcat設定項目 > 4.1. Tomcat設定項目との対応 > コンテキスト(Standard)> antiJARLocking ]"
antiJARLocking の設定を行っても JAR ファイルのロックを回避できない場合は、OTX-FAQ-000839 をご参照ください。
【対象製品】Application Server
【確認済みのバージョン】V8~V9
【確認済みのエディション】すべて
【確認済みの対象OS】Windows
【確認済みのJavaバージョン】すべて
【コンポーネント】Webコンテナ
【カテゴリー】トラブルシューティング