まだまだJava EEビギナーな状態が続き、タイトルのような悩みをしてました(^^;
自分が辿りついた答え
わざわざ再度デプロイしなくていい(^^)/
GlassFish(ちなみに3.1.2.2)ではwarをデプロイした際、実体のファイルとしては展開されていてdomain配下のapplicationsフォルダに格納されていました。
なので、ここで設定ファイルを編集して、GlassFishにて再読み込みすればOKでした!
運用方法とかはちゃんと規定したほうが良さそうなのと、その他にも色々やり方はありそうですが、とりあえず自分はこれで満足です。
自分にあった先入観
通常warのデプロイは、GlassFishのコマンドラインか管理画面から行っています。
頻度としてはやはり管理画面使うことが多く、以下の画面とかみていると自然とwar単位に並んでいるし「ああ、Java EEって内部的にもwarとして持つんだぁ、へー」と勝手に先入観を持ってしまっていました(^^;
そもそもの発端
.NETではWebサービスやASP.NETのプログラムをパッケージングするという作業はなくて「Webサイトの発行」なるものを行ってdllやweb.configなどがワラワラと吐き出され、それをサーバに配置する流れでした。
昨年Java EE6を触り始めたとき「warってなんぞや(-_-;?」という状態から始まったのですが、今では普通に成果物をwarファイルにパッケージングして、それをデプロイする作業をするようになりました。
「warって1つのファイルに固まるからわかりやすくていいな~(^^)」
「お客さんに成果物出すときもwarだけ送ればいいからシンプルだな~(^^)」
と思っていたのですが、実開発が始まって運用フェーズを想像すると…まてよ、と。
例えば、お客さん側の情シスでログレベルを変えたいとか、セッションタイムアウト時間を変えたいとか、そういう話になったとき…
「お客さんに設定ファイルを変更してもらい、warもパッケージングしてもらう!?」
「自分達で変えてwarファイルをお客さんに送りなおすの!?」
とか急に不安になりました…。これって外部設定ファイルにした意味なくない!?みたいな…。
調査とアドバイス
ネット調べると同じ質問を海外とかで幾つかみつけたのですが、Listenerクラス作ってやるとか、そもそもwarにパッケージングしないで、classpath使ってやるとか、出てきて、.NETよりめんどくさい…と思って、ふとツイートした所、@megascusさんから
「warを展開する設定にした上で、展開先を書き換えていくという運用もありです」
「もしくはwarとは別でclasspathを通しておくとか」
とコメント頂きました。デプロイ後に展開される、という考え方を全然していなかったので、とても助かりました(^^!!
Tomcatではできた、という情報も頂いて、それをキーワードに調べたら確かにTomcatではhostの属性にunpackWARsなるものがあって、そこで制御できるとのこと。なんと!
ではでは自分が使うGlassFishはどうなんだろ!と。
簡単な検証のため、実際に以下の手順でデプロイし、実体のファイルがあると思われるdomain配下のapplicationを確認してみました。
なお確認ではNetBeansからGlassFishを起動したのではなく、インストールされたGlassFishのstartserv.batから起動した状態で確認しています。
(NetBeansからだと違う所に実体があるっぽいです)
何もデプロイされていない状態から
2.確認用のwarをデプロイします
ちなみにデプロイしたWebプログラムは、JSFの画面でボタンが1つだけあって、押下するとSLF4JとLogbackを利用したログが出力される、という非常に単純なものです。
デプロイされると上記のようになります。
3.デプロイしたwarの実体があるdomain配下のapplicationフォルダを確認します
おお、普通にファイルが展開されている!!!
プログラムでは画面でボタンを押下されたら「debug」「info」「error」の3タイプのログを出力するように書いています。
で、変更前の設定はログ出力レベルを「debug」として、変更後はログレベルを「error」としました。
まずは変更前の確認から
3つとも出力されています。
で、本題。
logback.xmlのログ出力レベルを「error」に編集して…管理画面から「再ロード」してみました。
ポチッとな…
で、画面もリロードしてボタンを押下すると…
おー、ちゃんとerrorのしか出てない!!やった!!
.NETのweb.configとかと同じ感覚で設定ファイル修正ができた。良かったー(^^)
これなら自分が不安に思っていた運用イメージも払拭です。
コメント頂いた@megascusさんに感謝感謝ですm(_ _)m