[Seasar-user:19406] Re: dataSourceNameはnullあるいは空であってはいけません
吉村 実
[E-MAIL ADDRESS DELETED]
2010年 2月 27日 (土) 19:51:42 JST
小林様
ご回答ありがとうございます。
> 以前のバージョンのやり方がどうなっているのか,
> それと jdbc.html で説明しているやり方がどう
> 違うのか,一度手を止めてじっくり検討してみては
> いかがでしょうか.
> # 土曜日にメールしてる状況ではそれも難しいのかも
> # しれませんが.
耳の痛い話でございます。
本来ならきちんと理解してやりたいところ、やるべきなのですが、
時間が限られておりまして、お力をお借りしている次第です。
質問の内容に失礼な点があるかとは存じますが、
ご考慮頂けたらと思います。
ご回答の通りに2番目のを削除したところ、
エラーはでなくなったのですが、やはり動的な切り替えができなく、
プログラムの条件分岐によりどちらに行っても、
片方(" xaDataSource "の方)にしかアクセスしにいかない状況です。
なにか他に問題があり、
ご回答しにくいとは思いますが、
ご助言等頂けたら幸いです。
「jdbc.dicon」
<components namespace="jdbc">
<include path="jta.dicon"/>
<include path="co_jdbc.dicon"/>
<include path="op_jdbc.dicon"/>
<component
class="org.seasar.extension.jdbc.impl.BasicResultSetFactory"/>
<component name="dataSource"
class="org.seasar.extension.datasource.impl.SelectableDataSourceProxy"/>
<component name="dataSourceFactory"
class="org.seasar.extension.datasource.impl.DataSourceFactoryImpl"/>
</components>
「co_jdbc.dicon」
<components namespace="co_jdbc">
<include path="jta.dicon"/>
<include path="jdbc-extension.dicon"/>
<component name="xaDataSource"
class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
<property name="driverClassName">
"oracle.jdbc.OracleDriver"
</property>
<property name="URL">
"jdbc:oracle:oci:@db"
</property>
<property name="user">"COUSER"</property>
<property name="password">"COPASSWORD"</property>
</component>
<component name="statementFactory"
class="org.seasar.extension.jdbc.impl.BasicStatementFactory"/>
<component name="connectionPool"
class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
<property name="timeout">600</property>
<property name="maxPoolSize">10</property>
<property name="XADataSource">xaDataSource</property>
<property name="allowLocalTx">false</property>
<destroyMethod name="close"/>
</component>
<component name="forCoDataSource"
class="org.seasar.extension.dbcp.impl.DataSourceImpl">
<arg>connectionPool</arg>
</component>
</components>
「op_jdbc.dicon」
<components namespace="op_jdbc">
<include path="jta.dicon"/>
<include path="jdbc-extension.dicon"/>
<component name="xaDataSourceForOp"
class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
<property name="driverClassName">
"oracle.jdbc.OracleDriver"
</property>
<property name="URL">
"jdbc:oracle:oci:@db"
</property>
<property name="user">"OPUSER"</property>
<property name="password">"OPPASSWORD"</property>
</component>
<component name="statementFactoryForOp"
class="org.seasar.extension.jdbc.impl.BasicStatementFactory"/>
<component name="connectionPoolForOp"
class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
<property name="timeout">600</property>
<property name="maxPoolSize">10</property>
<property name="XADataSource">xaDataSourceForOp</property>
<property name="allowLocalTx">false</property>
<destroyMethod name="close"/>
</component>
<component name="forOpDataSource"
class="org.seasar.extension.dbcp.impl.DataSourceImpl">
<arg>connectionPoolForOp</arg>
</component>
</components>
「codao.dicon」
<components>
<include path="allaop.dicon"/>
<!-- auto registration -->
<component
class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRe
gister">
<property name="autoNaming">
<component
class="org.seasar.framework.container.autoregister.DefaultAutoNaming"/>
</property>
<initMethod name="addClassPattern">
<arg>"jp.go.hoge.common.dao"</arg>
<arg>".*Dao"</arg>
</initMethod>
</component>
<component
class="org.seasar.framework.container.autoregister.AspectAutoRegister">
<property
name="interceptor">allaop.daoInterceptorChain</property>
<initMethod name="addClassPattern">
<arg>"jp.go.hoge.common.dao"</arg>
<arg>".*Dao"</arg>
</initMethod>
</component>
<!-- auto registration -->
</components>
「PrListInitServiceImpl.java」
private void initializeDaoByRefereDb( PrSearchForm prSearchForm, PrListForm
prListForm ) {
prListForm.setTPrDataDao( tProcDataDao );
prListForm.setTPrBasisesDao( tProcBasisesDao );
prListForm.setTShDao( tShDao );
}
「PrListCommonServiceImpl.java」
public List<TPrData> searchByPrSearchCondition4List( PrSearchForm
prSearchForm, PrListForm prListForm ) {
RefereDB referDB =
prSearchForm.getSaveSearchCondition().getRefereDB();
if ( referDB.isOpDB() == true ) {
dataSourceFactory.setSelectableDataSourceName("forOp");
} else {
dataSourceFactory.setSelectableDataSourceName("forCo");
}
return prListForm.getTPrDataDao().findBySearchCondition4PrList(
prSearchForm.getSaveSearchCondition() );
}
以上、
恐れ入りますが、宜しくお願い致します。
Seasar-user メーリングリストの案内