[Seasar-user:16923] Re: [Seasar] HOT deploy と COOL deploy の挙動の違いを教えて頂けないでしょうか

Tsutomu Uchima [E-MAIL ADDRESS DELETED]
2009年 2月 16日 (月) 09:10:33 JST


お世話になっています。うちまです。小林 (koichik)様レスありがとうございます。

「■ 具象クラスから継承しない」事は初めて知りました。

とても参考になりました。ありがとうございます。

> -----Original Message-----
> From: [E-MAIL ADDRESS DELETED]
> [mailto:[E-MAIL ADDRESS DELETED]] On Behalf Of Koichi Kobayashi
> Sent: Friday, February 13, 2009 9:00 PM
> To: [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:16915] Re: [Seasar] HOT deploy と COOL deploy の挙動
> の違いを教えて頂けないでしょうか
>
> 小林 (koichik) です.
>
> Date:    Fri, 13 Feb 2009 19:19:30 +0900
> From:    "Tsutomu Uchima" <[E-MAIL ADDRESS DELETED]>
> To:      <[E-MAIL ADDRESS DELETED]>
> Subject: [Seasar-user:16913] [Seasar] HOT deploy と COOL deploy の挙動の違
> いを教えて頂けないでしょうか
>
> > 今後のために開発時に意識すべき HOT deploy と COOL deploy の挙動の違いを
教
>> > て頂けませんでしょうか。もしくはHOT deploy と COOL deploy の挙動が等価と
> なる
> > ような設計指針があればご指導下さい。
>
> 詳細はドキュメントに書かないといけないと
> 思ってますが,とりあえず簡単に.
>
> ■ SMART deploy 対象・非対象を明確に分ける
>
> アプリケーション全体を SMART deploy 対象に
> するのではなく,その一部だけを SMART deploy
> 対象にする.
> 例えばアプリケーション全体のパッケージが
>
> jp.co.xxx.yyyy.〜
>
> である場合,SMART deploy のルートパッケージは
>
> jp.co.xxx.yyyy.smart
>
> のようにする.
>
> その上で,SMART deploy 非対象クラスから
> SMART deploy 対象クラスは参照しない.
>
> できれば (IDE における) プロジェクトを別に
> してしまい,SMART deploy 非対象プロジェクトは
> SMART deploy 対象プロジェクトを参照できなくする.
>
> SMART deploy 非対象となるのは,Servlet や
> Filter など Seasar2 で管理されないクラスや,
> dicon ファイルに定義されるクラス,および
> それらのクラスから参照されるクラスです.
>
> これは HOT deploy で ClassCastException や
> LinkageError を避けるために必要です.
>
> 以下は SMART deploy 対象クラスについての指針です.
>
> ■ 具象クラスから継承しない
>
> 継承する場合は必ず抽象クラスを継承する.
> つまり,全てのクラスは abstract か final
> であるかのようにする.
> # 実際に final を指定すると AOP を適用
> # できなくなるので注意.
>
> これは,COOL deploy でのみ TooManyRegistration〜 に
> なったり,自動バインディングされないことを
> 避けるために必要です.
>
> ■ HttpSession を直接使用しない
>
> SMART deploy 対象クラスを HttpSession から
> 取得する場合は,HttpSession を直接使わず
> sessionScope プロパティを使用する.
>
>   public Map<String, Object> sessionScope;
>
> 同じように,ServletContext は applicationScope
> プロパティを使用する.
>
>   public Map<String, Object> applicationScope;
>
> これは,HOT deploy 時に HttpSession から
> オブジェクトを取得して ClassCastException が
> 発生することを避けるために必要です.
>
>
> すぐに思いついたのは以上です.
> 他に (バッド) ノウハウをお持ちの方は
> レスいただけると助かります.
>
>
> --
> <component name="koichik">
>     <property name="fullName">"Koichi Kobayashi"</property>
>     <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
>     <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
> </component>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user



Seasar-user メーリングリストの案内