[Seasar-user:4054] Re: Daoにそれぞれのデータソースを割り当てたい
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2006年 7月 12日 (水) 11:56:21 JST
関です。
JUNDUさんありがとうございます。
interceptor が dao に DataSource を適応させる事を理解していなかったために
分かりにくい聞き方になってしまいました。
レスを参考に作成しているのですが、いまだ動作させることが出来ず
質問させて頂きたいと思います。
修正対象は s2jsf-example に手を加えて複数データソース対応を行おうとしています。
HSSQL用とMYSQL用の j2ee と dao を1ずつ作成し、interceptorコンポーネント
を2つ作成しました。その interceptorコンポーネント を組み込んだ
daoInterceptorChain を1個ずつ作成しました。
データソースを分けたいdaoはdb毎に異なるパッケージに配置し、app.dicon の
自動バインディング でフォルダを分けて interceptorChain を
適応しようと考えています。
これで動作すると思ったのですが、tomcatの起動時に以下のエラーが表示されて
ブラウザで確認してもDBのデータを取得できません。
[main] examples.jsf.logic.impl.EmployeeLogicImplのプロパティ(employeeDtoDao)が見つからないので設定をスキップします(←exampleのDAO)
[main] examples.jsf.logic.impl.EmployeeLogicImplのプロパティ(departmentDtoDao)が見つからないので設定をスキップします(←exampleのDAO)
[main] examples.jsf.logic.impl.LoginLogicImplのプロパティ(userDtoDao)が見つからないので設定をスキップします(←自作のDAO)
タブン、tomcatの起動時に dao をコンポーネント化出来ていないことが原因だとは
予想が付いたのですがどこが間違っているのかが判断つきません。
よろしければ、上記方法+下記の「途中詰まったところ」の解決方法も合わせて
誤ってると思われるところが有れば教えて頂きたいと思います。
PS:途中詰まったところ
1.<components namespace="dao-hssql"> の様に‐があるとコンポーネントとして認識しない。
→ <components namespace="dao_hssql"> アンダースコアに変換するとOKだった
2.j2ee.diconでnetでよくあるサンプルみたいに <property name="xaDataSource"> としても文法エラー
→ <property name="XADataSource"> とXAを大文字にするとOKだった
よろしくお願い致します。
** 参考 ******************************************
**** j2ee ********************************************************************
- j2ee_hssql.dicon
- j2ee_mysql.dicon
======= j2ee_hssql.dicon =======
<component name="xaDataSourceHsSql"
class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
[省略]
</component>
<component name="connectionPoolHsSql"
class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
<property name="XADataSource">xaDataSourceHsSql</property>
[省略]
</component>
<component name="dataSourceHsSql"
class="org.seasar.extension.dbcp.impl.DataSourceImpl">
<arg>connectionPoolHsSql</arg>
</component>
======= j2ee_mysql.dicon =======
<component name="xaDataSourceMySql"
class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
[省略]
</component>
<component name="connectionPoolMySql"
class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
<property name="XADataSource">xaDataSourceMySql</property>
[省略]
</component>
<component name="dataSourceMySql"
class="org.seasar.extension.dbcp.impl.DataSourceImpl">
<arg>connectionPoolMySql</arg>
</component>
**** dao ********************************************************************
- dao_hssql.dicon
- dao_mysql.dicon
======= dao_hssql.dicon =======
<include path="j2ee_hssql.dicon"/>
<include path="j2ee.dicon"/>
<component
class="org.seasar.dao.impl.FieldAnnotationReaderFactory"/>
<component
class="org.seasar.dao.impl.DaoMetaDataFactoryImpl"/>
<component name="interceptor"
class="org.seasar.dao.interceptors.S2DaoInterceptor"/>
======= dao_mysql.dicon =======
<include path="j2ee_mysql.dicon"/>
<include path="j2ee.dicon"/>
<component
class="org.seasar.dao.impl.FieldAnnotationReaderFactory"/>
<component
class="org.seasar.dao.impl.DaoMetaDataFactoryImpl"/>
<component name="interceptor"
class="org.seasar.dao.interceptors.S2DaoInterceptor"/>
**** aop ********************************************************************
======= allaop.dicon =======
<!-- HSSQL -->
<component
name="daoInterceptorChainHsSql"
class="org.seasar.framework.aop.interceptors.InterceptorChain"
>
<initMethod name="add"><arg>aop.traceInterceptor</arg></initMethod>
<initMethod name="add"><arg>dao_hssql.interceptor</arg></initMethod>
</component>
<!-- MYSQL -->
<component
name="daoInterceptorChainMySql"
class="org.seasar.framework.aop.interceptors.InterceptorChain"
>
<initMethod name="add"><arg>aop.traceInterceptor</arg></initMethod>
<initMethod name="add"><arg>dao_mysql.interceptor</arg></initMethod>
</component>
**** 自動バインディング ********************************************************************
======= app.dicon =======
<component
class="org.seasar.framework.container.autoregister.AspectAutoRegister"
>
<property name="interceptor">daoInterceptorChainHsSql</property>
<initMethod name="addClassPattern">
<arg>"examples.jsf.hdao"</arg>
<arg>".*Dao"</arg>
</initMethod>
</component>
<component
class="org.seasar.framework.container.autoregister.AspectAutoRegister"
>
<property name="interceptor">daoInterceptorChainMySql</property>
<initMethod name="addClassPattern">
<arg>"examples.jsf.mdao"</arg>
<arg>".*Dao"</arg>
</initMethod>
</component>
** 参考 ココマデ ******************************************
Seasar-user メーリングリストの案内