[Seasar-user:13442] Re: [Teeda]cooldeploy時に登録されないコンポーネント

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 3月 27日 (木) 16:30:13 JST


小林 (koichik) です.

Date:    Thu, 27 Mar 2008 12:38:57 +0900 (JST)
From:    [E-MAIL ADDRESS DELETED]
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:13434] [Teeda]cooldeploy時に登録されないコンポーネント

> <質問>
> そこで質問なのですが、cooldeployモードで同じアプリケーションをデプロイする場合、
> ある環境ではコンポートネント化され、ある環境ではコンポーネント化されない
> 条件があるとしたらそれはどのようなものと考えられますでしょうか?
> 
> また、各クラスがコンポーネント化される順序が環境によって変化する
> ことがあるのでしょうか。

COOL deploy の場合,ファイルシステム上の .class
ファイルを操作してコンポーネントを検出します.
# Jar ファイルの中を走査して検出する場合もあります.

そのため,ファイルシステム上で .class ファイルが
見つかる順番によってコンポーネントを登録する順番が
変わります.
この順番は java.io.File#list() の結果に依存するのですが,
Javadoc によると

----------------------------------------------------------------------
結果として得られる配列の名前文字列は特定の順序にはなりません。
アルファベット順になるわけではありません。
----------------------------------------------------------------------

ということなので,順番は環境によって異なります.

その際,登録済みのコンポーネントは登録しないように
なっています.
サブクラスはスーパークラスでもあるので,サブクラスが
先に登録されるとスーパークラスは登録されません.
そのため,OutPjMemInfoDtlPage や OutSrhRstDtlPage が
先に登録されると,EntPerEntPage は「登録済み」と
判断されてしまい,登録されなくなります.

HOT deploy だと,ファイルシステム走査することなく,
必要になったコンポーネントを直接登録するので,
このような問題はありません.



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