[seasar-dev:455] Re: [S2Container] TigerAnnotationHandler の initialize について
Koichi Kobayashi
koichik @ improvement.jp
2006年 7月 9日 (日) 02:00:43 JST
小林 (koichik) です.
Date: Sun, 09 Jul 2006 01:05:59 +0900
From: KOMORI Yusuke <y-komori @ nifty.ne.jp>
To: seasar-dev @ ml.seasar.org
Subject: [seasar-dev:454] [S2Container] TigerAnnotationHandler の initialize について
> で、initialize() の中で呼ばれる loadDefaultComponentDefBuilder() メソッ
> ドの中で、clearComponentDefBuilder() されているため、先に登録しておいた
> 独自のComponentDefクラスが無効になってしまいます。
ぐはぁっ...
> 回避策としては、static ブロックでクラスロード時に初期化してしまうか、
これだけだと HOT deploy でうまく動きません.
> loadDefaultComponentDefBuilder() の最初で componentDefBuilders を初期化
> しないようにするかのどちらかになると思うのですが、いかがでしょうか。
そうですね,これはこれで大丈夫... かなぁ.
# Aspect だけ clear が漏れてるし...
いずれにせよ,HOT deploy では (Web の) リクエスト (相当) 処理後に
TigerAnnotationHandler#dispose() が呼び出されて componentDefBuilders は
clear() されてしまうので,何らかの方法で initialize() の度に Builder を
登録できる仕掛けが必要になりますね.
AnnotationHandler も s2container.dicon で設定可能にすべきか?
とりあえず,loadDefaultComponentDefBuilder() で componentDefBuilders を
clear() するのは削除しましょう.
HOT deploy で毎回 ComponentDefBuilder 等を登録するタイミングを
提供する方法は検討しておきます.
> (とりあえず、手元では後者で回避しています)
それではそのままコミットお願いします.(^^;
--
<component name="koichik">
<property name="fullName">"Koichi Kobayashi"</property>
<property name="email">"koichik @ improvement.jp"</property>
<property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>
Seasar-dev メーリングリストの案内