[Seasar-user:8228] 複数データソースの設定

r.m [E-MAIL ADDRESS DELETED]
2007年 6月 11日 (月) 21:04:35 JST


お世話になってます。
水澤です。

今回、異なるOracleのデータベースへ接続する要件があり、色々試しているのですが
うまくいきません。
どなたかご教授お願いできますでしょうか?
色々調べていると、diconの設定により、複数可能ですが、S2のバージョンが2.3以前のため
同じようにいきません。
当方利用のバージョンはS2 2.4.1になります。

-----jdbc.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 namespace="jdbc">
        <include path="jta.dicon"/>
        <include path="jdbc-extension.dicon"/>

        <component name="resultSetFactory"
class="org.seasar.extension.jdbc.impl.BasicResultSetFactory"/>
        <component name="statementFactory"
class="org.seasar.extension.jdbc.impl.ConfigurableStatementFactory">
                <arg>
                        <component
class="org.seasar.extension.jdbc.impl.BasicStatementFactory"/>
                </arg>
                <property name="fetchSize">100</property>
        </component>

        <component name="xaDataSourceA"
                class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
                <property name="driverClassName">
                        "oracle.jdbc.driver.OracleDriver"
                </property>
                <property name="URL">
                        "jdbc:oracle:oci:@xxxxxx"
                </property>
                <property name="user">"xxxx"</property>
                <property name="password">"xxx"</property>
        </component>

        <component name="connectionPoolA"
                class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
                <property name="timeout">600</property>
                <property name="maxPoolSize">10</property>
                <property name="allowLocalTx">true</property>
                <property name="XADataSource">xaDataSourceA</property>
                <destroyMethod name="close"/>
        </component>

        <component name="dataSourceA"
                class="org.seasar.extension.dbcp.impl.DataSourceImpl">
                <arg>connectionPoolA</arg>
        </component>


        <component name="xaDataSourceB"
                class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
                <property name="driverClassName">
                        "oracle.jdbc.driver.OracleDriver"
                </property>
                <property name="URL">
                        "jdbc:oracle:oci:@xxx"
                </property>
                <property name="user">"xxx"</property>
                <property name="password">"xxx"</property>
        </component>

        <component name="connectionPoolB"
                class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
                <property name="timeout">600</property>
                <property name="maxPoolSize">10</property>
                <property name="allowLocalTx">true</property>
                <property name="XADataSource">xaDataSourceDWH</property>
                <destroyMethod name="close"/>
        </component>

        <component name="dataSourceB"
                class="org.seasar.extension.dbcp.impl.DataSourceImpl">
                <arg>connectionPoolB</arg>
        </component>
</components>
---------------------------------------------------------------------------------------

----    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="convention.dicon"/>
        <include path="aop.dicon"/>
        <include path="app_aop.dicon"/>
        <include path="teedaExtension.dicon"/>
        <include path="dao.dicon"/>
        <include path="dxo.dicon"/>
        <include path="app_dao.dicon"/>
</components>
----------------------------------------------------------------------------


----   app_dao.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 namespace="app_dao">
        <include path="pre_dao.dicon"/>

        <component name="DaoA" class="hogeA">
            <aspect>interceptorA</aspect>
        </component>
         <component name="DaoB" class="hogeB">
            <aspect>interceptorB</aspect>
        </component>

</components>
-------------------------------------------------------------------------------------

-----  pre.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 namespace="pre">


        <component name="interceptorA"
                class="org.seasar.dao.interceptors.S2DaoInterceptor">
            <arg>
                <component class="org.seasar.dao.impl.DaoMetaDataFactoryImpl">
                    <arg>dataSourceA</arg>
                    <arg>statementFactory</arg>
                    <arg>resultSetFactory</arg>
                </component>
            </arg>
        </component>

        <component name="interceptorB"
                class="org.seasar.dao.interceptors.S2DaoInterceptor">
            <arg>
                <component class="org.seasar.dao.impl.DaoMetaDataFactoryImpl">
                    <arg>dataSourceB</arg>
                    <arg>statementFactory</arg>
                    <arg>resultSetFactory</arg>
                </component>
            </arg>
        </component>
</components>
-------------------------------------------------------------------------------------


設定ファイルはこのようにしています。
起動時に、
avax.sql.DataSourceに複数のコンポーネント(org.seasar.extension.dbcp.impl.DataSourceImpl,
org.seasar.extension.dbcp.impl.DataSourceImpl)が登録されています
とエラーが出てしまいます。

宜しくお願いいたします。



Seasar-user メーリングリストの案内