[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 メーリングリストの案内