コマンドラインでのJavaキャッシュクリアとクリア結果確認
弊社で対応しているWebアプリケーションは毎回クライアントがjarファイルをダウンロードして利用しています。
サーバ側でモジュールが最新化されると、ダウンロードする際には一度キャッシュクリアをしなくてはなりません。
しかし銀行の環境としてはCドライブを参照することはできず、コンパネにJavaも表示されない。
→今時あほか。と思うかもしれないが銀行はマジでこういうことをやっている。
ローカルドライブ上にデータを保存させないためにアクセスを禁止させている。
そのためCドライブのディレクトリをエクスプローラから書き込みが行えないので手動削除できない
またプログラムに関する設定も参照できないようにJavaなどの設定も表示されない状態となっている。
苦肉の策として考え抜いたのが、コマンドによる初期化を実行することです。
※GUI処理は行えませんが、CLIによる操作は受け付けるようです。
というわけでバッチファイルを作成
■キャッシュクリア
javaws -clearcache
このコマンド一文でOKです。
しかしながら実行した瞬間即削除されるわけではありません。
画面で実行したときもそうですが実際はバックグラウンドで削除処理が動作しているため実際は1分程度待つ必要があります。
だいたいこれでうまくいくはずですが、ユーザからWebサーバからダウンロードするJavaアプリケーションが古いまま(最新バージョンに上書きさていない)と思われる問い合わせがありました。
ユーザからは「Javaのキャッシュがクリアされたかどうか確認する方法はないのか?」という質問あり。
いや、手順ミスってんじゃないの・・・?
とはいえお客様ですので直接は言えず。ひとまず確認するためのコマンドを作成・連携する形としました。
■キャッシュクリア確認コマンド
net use X: <出力先ディレクトリ> cd %USERHOME%\AppData\LocalLow\Sun\Java\Deployment\cache dir *.idx /b /s > X:\log\%USERNAME%_filelist.txt
これを実行して、ネットワークドライブとして新規作成したXドライブのlogフォルダ配下に
殆ど空っぽのファイルが作成されていればキャッシュがクリアされていると思ってよいと思います。