[Seasar-user:20057] Re: [S2Chronos] Task内でのService使用について

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2010年 8月 10日 (火) 20:00:33 JST


小林 (koichik) です.

Date:    Tue, 10 Aug 2010 19:22:43 +0900
From:    鈴木 雄輔 <[E-MAIL ADDRESS DELETED]>
To:      <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:20056] [S2Chronos] Task内でのService使用について

> 現在、Teeda、S2JDBC、S2Chronos を使って開発を行っています。
> Taskクラス内でS2JDBC-Genから生成されたServiceクラスを使用しているのですが、
> 同ServiceクラスをPageクラスで、使おうとすると下記メッセージが出力されます。
> 
> 「WARN  org.seasar.framework.container.hotdeploy.HotdeployClassLoader - HOT
> deploy対象クラス(xxx.agile.service.EmpService)が非対象クラスから参照されて通
> 常のクラスローダにロードされています。」

EmpService が HOT 非対象クラスローダにロードされる
原因となったクラスを特定した方がいいかも.

Tomcat (Web コンテナ) を起動する JVM オプションで
-verbose:class を指定してみてください.
「非対象クラスから参照されて〜」より (もしかしたら
ずっと) 前に

[Loaded xxx.agile.service.EmpService from org.seasar.framework.container.hotdeploy.HotdeployClassLoader]

と

[Loaded xxx.agile.service.EmpService from file:〜]

という 2 つのメッセージが表示されるはずです.
後者の方が HOT deploy 非対象のクラスから参照されて
ロードされたものなので,その周辺でロードされた
クラスから該当のもの (EmpService を参照している
クラス) を見つけてください.

EmpService が InitialTask・IndexPage からしか
参照されてないのであれば,

[Loaded xxx.agile.task.InitialTask from file:〜]

か

[Loaded xxx.agile.web.IndexPage from file:〜]

のどちらかが出力されているはずです.
どちらの場合でも,それが一度は HotdeployClassLoader に
ロードされたなら

[Loaded xxx.agile.xxx.Xxx from org.seasar.framework.container.hotdeploy.HotdeployClassLoader]

が出力されるはずなので,その場合は何がきっかけで
通常のクラスローダにロードされたのかを調べることに
なるかと.

出力されていなければ,そもそも HOT 非対象に
なってしまっているのだと思われるので,設定ファイルを
見直すことになるかと.


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