Seasar2勉強中 - hot deployのオン・オフ

hot deployのオン・オフに関係している設定ファイルが知りたく、設定ファイルリファレンスを読む。*1






 
http://sastruts.seasar.org/fileReference.html


関係ありそうなファイル。


・web.xml


web.xml中にHotdeployFilterが定義されている。hot deployの切り替えには関係なさそう。



・s2container.dicon

src/main/resourcesのs2container.diconでSeasar2自身のカスタマイズを行うらしい。blankではデフォルトでhotdeploy.dicon, warmdeploy.dicon, cooldepoly.diconが設定してある。各.diconファイルはs2-framework-xxx.jarの中に含まれているらしく、今のところ、触る必要はなさそう。


・env.txt

hot deployのオン・オフはenv.txtで制御。env.txtの中には、デフォルトでctと書いてある。


ctだと、hot deployオン。リクエストのたびに、必要なコンポーネント「だけ」再デプロイ。ctは結テ用の環境らしい。
utだと、warm deployオン。アプリの変更をhotには認識せず、且つアプリ起動時に全デプロイも行わない。アプリの起動が早いので、テストケースの実行時に便利。utは単テ用。
itかenv.txtのファイルがない状態だと、cool deployオン。アプリ起動時に全デプロイを完了するので、hot deployと比べると高速。システとか、本番用。


Tomcatのcontext.xml

Managerタグのコメントアウトをはずすこと。ActionFormやDTOをセッションに格納するようにしている場合、hot deployが効かない場合があるらしい。


また、コンテキスト設定でreloadable=yesとなっているとソース変更時にtomcatがリロードされてしまうらしい。
参考:HOT deploy時にソースコードを編集するとコンテキストのリロードが実行されてしまう
http://www.seasar.org/wiki/index.php?FAQ%2FS2Container#e4624d2e


ソースを修正して、アプリにアクセスしてみる。コンソールを見ると、

DEBUG 2008-07-25 22:32:00,081 [http-8080-1] HOT deployを開始します
DEBUG 2008-07-25 22:32:00,101 [http-8080-1] クラス(cyberarchitect.action.HelloAction[helloAction])のコンポーネント定義を登録します
DEBUG 2008-07-25 22:32:00,191 [http-8080-1] クラス(cyberarchitect.form.HelloForm[helloForm])のコンポーネント定義を登録します
DEBUG 2008-07-25 22:32:00,201 [http-8080-1] BEGIN cyberarchitect.action.HelloAction#submit()
DEBUG 2008-07-25 22:32:00,201 [http-8080-1] トランザクションを開始しました。tx=[FormatId=4360, GlobalId=1216992499073/14, BranchId=]
DEBUG 2008-07-25 22:32:00,201 [http-8080-1] トランザクションをコミットしました。tx=[FormatId=4360, GlobalId=1216992499073/14, BranchId=]
DEBUG 2008-07-25 22:32:00,201 [http-8080-1] END cyberarchitect.action.HelloAction#submit() : result.jsp
DEBUG 2008-07-25 22:32:00,211 [http-8080-1] HOT deployを終了しました



ホットにデプロっているみたい。しかし、以下のEclipseエラーが出るのが気になるので、また時間をみつけて要調査。

ホット・コード置換に失敗しました。
ローカル・ホスト上のorg.apache.catalina.startup.Bootstrap:2929は、実行中のコードをワークスペース内のコードに置き換えることができませんでした。

理由:ホットコードの置換に失敗しました - スキーム変更は実装されていません。



追記:ひがさんにコメント頂いた。特に気にしなくていいみたい。

 

*1:追記:ガーン。ここに書いてあった。SMART deployの切り替えhttp://s2container.seasar.org/2.4/ja/DIContainer.html#SMARTdeployS2ContainerDicon