[Seasar-user:6995] Re: [Seasar]HOT DEPLOY 時にsingletonって

原田 [E-MAIL ADDRESS DELETED]
2007年 4月 2日 (月) 09:34:52 JST


原田です。

まぁそうですよね。

了解です。

ありがとうございます。


Koichi Kobayashi <[E-MAIL ADDRESS DELETED]> wrote:

> 小林 (koichik) です.
> 
> Date:    Sat, 31 Mar 2007 21:19:59 +0900
> From:    原田 <[E-MAIL ADDRESS DELETED]>
> To:      seasar-ML <[E-MAIL ADDRESS DELETED]>
> Subject: [Seasar-user:6991] [Seasar]HOT DEPLOY 時にsingletonって
> 
> > HOT DEPLOY時に、instance指定をsingletonにしたコンポーネントは、どのような扱いになるのですか?
> 
> HOT deploy では,リクエスト毎に新しいクラスローダが
> 作成され,クラスがロードされ,インスタンスが作成されます.
> singleton のコンポーネントはそのリクエストの中では
> 唯一のインスタンスが作成されますが,異なったリクエストに
> またがると別のインスタンスが作成されます.
> 
> > 無理も無いような気がしますが、毎回初期化され、requestのように動きます。
> 
> イメージとしては,リクエストの度に Web コンテナなり
> AP サーバなりを再起動してアクセスするようなものだと
> 考えてください.
> initMethod で指定したメソッドだけでなく,static
> イニシャライザもそのたびに実行されます.
> 
> > 毎回初期化されてしまうので、INIT_METHODで指定したメソッドも毎回呼ばれてしまい、困っています。
> > 
> > 何かよい回避方法は無いでしょうか。
> 
> initMethod を実行したことを HOT deploy 非対象の
> コンポーネントにフラグとして持てば回避できるかと
> 思います.
> コンポーネントというほど大げさにしなくても,
> 適当なクラスの static なフィールドで状態を
> 管理すれば十分かと.
> 
> ただ,その initMethod で呼ばれるメソッドを変更しても
> Web コンテナの再起動なり Web アプリの再デプロイなど
> しないと確認できなくなってしまいますが.
> 
> 
> -- 
> <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 メーリングリストの案内