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