[seasar-dev:416] Re: hotdeployについて

arkw e1.arkw @ gmail.com
2006年 6月 5日 (月) 11:07:13 JST


おはようございます。ありかわです。

>
> > 現象として、
> > singletonのコンポーネントが、hotdeploy対象のコンポーネントにAutoBindされ
> > ません。
> > ・singletonのコンポーネントは、app.diconで、定義しています。
> > ・hotdeploy対象のコンポーネントは、Autodeployを使って定義しています。
>
> おそらく,singleton のコンポーネントが hotdeploy 対象となる
> ルートパッケージ (s2container.dicon で定義してるもの) の
> サブパッケージ以下に存在するものと思われます.
>
> そのため,app.dicon に定義したコンポーネントまで
> H★O★T Deploy のように扱われているのだと思います.
>
> > 154 if (container.hasComponentDef(propName)) {
> > 155 Object value = container.getComponent(propName);
> > 156 if (propType.isInstance(value)) {
> > 157 setValue(componentDef, propertyDesc, component, value);
> > 158 return true;
> > 159 }
> > 160 }
> >
> > この155行目では、ちゃんとコンテナから値を取得しているみたいです。
> > この156行目の条件分岐がfalseになってしまいます。
>> > value.getClass()で、取り出せるクラスと、propTypeのクラスが異なるみたいで
> > す。
>
> 異なったクラスローダーからロードされたクラスは,元になる
> class ファイルが同一でも全く別物のクラスとして扱われます.
> そのため,それらの間での代入は不可能です.
>
> これを回避するには,H★O★T Deploy 非対象のコンポーネントは,
> H★O★T Deploy のルートパッケージ以下に配置しないように
> パッケージ構成を変更してください.
>
> 同じように dicon に記述してあっても,DataSource などで
> 問題が起きないのはそれらがルートパッケージ以下にないためです.
>
> プロジェクト標準などでパッケージ構成を自由に変更することが
> 難しい場合もあるかと思うので,ルートパッケージ以下にあっても
> H★O★T Deploy の対象とならないパッケージを指定できるように
> した方がいいかもしれませんね.

ご返信ありがとうございます。
ご指摘どおり修正してみたら動作いたしました。

有難う御座いました。


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