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