コピペ式ホットデプロイ モード切替 URLDeployScannerのOn/Off

今回WebLogicを触って気が付いたことのうちの1つ.

開発モードというのとプロダクションモードというのがあって,開発モードでは特定のファイルパス(ディレクトリ)上にEAR/WAR/JARをコピペするだけでホットデプロイしてくれる.開発時には非常に助かる機能.一方運用時にはそんなことは必要ないからプロダクションモードというのがあってこれはコピペじゃホットデプロイしない.

コピペでOKってことはAntとかで自動化できて開発者が楽になるってことね.

#このモードってインストール時に選ぶんだっけな?

一方JBossにはこのWebLogicの開発モードと同等かそれ以上の機能がある.URLDeployScannerというサービスによるコピペ(ファイル更新)検知によるホットデプロイ.これも特定のファイルパス上に対して働く.(対象パスと頻度の変更などももちろん可能)

JBossのURLDeployScannerの場合はEAR/WAR/JARだけにとどまらず,データソース設定ファイルである○○-ds.xmlを初めとしたリソースアダプタ関連、各種サービス設定を記述した○○-service.xmlなども更新するだけで読み取ってくれる.

WebLogicを触っててわりと出くわしたのが、JNDI名の変更を初めとしたいくつか(半分くらい?)の項目を変更するとサーバ再起動を要したこと.

しかしJBossの場合はmysql-ds.xmlでJNDIへバインドしたデータソースは、mysql-ds.xmlファイルを削除すれば再起動することなくアンバインド/アンデプロイされるし、mysql-ds.xmlファイルに記述したJNDI名を書き換えてファイルを保存すればこれまた動的に変更してくれる。

んー、そういえばそもそもこういう再起動しないで変更可能なことを本来「ホットデプロイ機能」とかって言うんだっけ.まあいいか.

で,前置きが長くなったけれども何を言いたいのかというと,運用時はURLDeployScanner要らないよね,ということ.WebLogicのプロダクションモードみたいな感じにしたい場合,どーするか?

ちょこっと考えてみたけれども,これはjmx-consoleからURLDeployScannerサービスをstopさせるのが良いと思う.

URLDeployScannerをconf/jboss-service.xmlから削除してしまったりすると,後で急に再デプロイやサーバの設定を変更したいと思ったときに困るわけで.

サーバを起動させる時にはURLDeployScannerは普通に立ち上げさせて,それからstopメソッドをjmx-consoleから呼んでおけば,後で必要になった時にまたjmx-consoleからstartメソッドでサービスを開始できるはず.

何?それじゃサーバを自動的に再起動させたような場合どうするんだと? 馬鹿言っちゃいけないよ.何のためのJMXですか.サーバ再起動時に呼ばれるスクリプト( 別にrun.shでもいいんじゃない)からJMX経由でstopメソッドを呼べば良いでしょう,とか言ってみたりw

まあ全てはJMX Microkernelのアーキテクチャの美しさがこういった素晴らしさの根源になっているわけですな.

そんなわけで,このことはJBoss開発から運用へ入る際のTipsに加えておこう.