Re: 某巨大掲示板
国産DIコンテナSeasar その7
- 689 :デフォルトの名無しさん :2006/11/19(日) 01:44:45
- S2Dao+S2(現最新版)でHot Deployをしようとすると、getComponent()時に
「[ESSR0064]クラスXXDaoのコンストラクタが見つかりません」と出てしまいました。
インターフェースなのにクラスとして扱われているようです。
Cool Deployだとちゃんと動くのですが、Hot Deployだと特別な設定が必要なのでしょうか?
diconファイルはresources/以下にあるものをそのまま使っています。
COOL で動いているというのがちょっと気になりますが,詳細が分からないので普通に S2Dao を使うための説明をしてみるテスト.
Seasar2.4 は S2Dao に依存できないので,S2Dao 用の設定は含まれていません.
S2Dao を使えるようにするには,以下の設定が必要になります.
まずは Dao インタフェースに S2Dao のインターセプタを適用するための設定が必要です.
これは customizer.dicon
で行います.
customizer.dicon
の中にコンポーネント名が daoCustomizer
となっている定義があるので,そこを次のように修正します.
customizer.dicon
<component name="daoCustomizer" class="org.seasar.framework.container.customizer.CustomizerChain"> <initMethod name="addCustomizer"> <arg>defaultCustomizer</arg> </initMethod> <initMethod name="addCustomizer"> <arg> <component class="org.seasar.framework.container.customizer.AspectCustomizer"> <property name="interceptorName">"dao.interceptor"</property> </component> </arg> </initMethod> </component>
二つめの <initMethod>
が追加した部分です.
そして app.dicon
(アプリケーションのルートとなる dicon) で dao.dicon
をインクルードします.
app.dicon
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN" "http://www.seasar.org/dtd/components24.dtd"> <components> <include path="dao.dicon"/> ・・・ </components>
これで S2Dao も動くんじゃないかと思います.
ただし,Dao のパッケージには注意してください.
ルートパッケージ.dao
になります.
ルートパッケージは convention.dicon
に設定します.