[Seasar-user:11880] Re: [S2Dao]S2Daoで複数DBへの接続

林 祐一郎 [E-MAIL ADDRESS DELETED]
2007年 12月 3日 (月) 13:51:28 JST


JUNDU様

お世話になっております。
林祐一郎です。

お返事、ありがとうございます。

> まず、AutoRegisterとSMART deployのどちらを使うかをはっきりさせた方が良い
様です。
>現状の設定ファイルには、両方の書き方が混ざっています。
>
>AutoRegister…クラス名やパッケージ名の一致するクラスを自動的にdiconに登録す
る。
>SMART deploy…規約にそったパッケージ構成、クラス名のクラスを自動的にdiconに
登録する。
>
> AutoRegisterはSeasar2.3以降、SMART deployはSeasar2.4以降でサポートされて
いる方法
>です。
>
なるほど。。。
書き方が混ざっていたんですね。

> 使おうとしているSeasar2のバージョンなどを教えていただけると、もうちょっと
実際のファ
>イルにそった回答ができると思いますので教えていただけますでしょうか。よろし
くお願い致
>します。
>
ありがとうございます。

私どもの使用しているSeasar2のバージョンは以下のようになります。
 s2-dao-1.0.35.jar
 s2-extension-2.3.12.jar
 s2-framework-2.3.12.jar

(うまく、設定ファイルが作れていなかったんですね。
 なるほど。。。)

以上です。
お手数をおかけしますが、
よろしくお願いいたします。


-----Original Message-----
From: [E-MAIL ADDRESS DELETED]
[mailto:[E-MAIL ADDRESS DELETED]] On Behalf Of JUNDU
Sent: Monday, December 03, 2007 1:08 PM
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:11878] Re: [S2Dao]S2Daoで複数DBへの接続

JUNDUです。

 まず、AutoRegisterとSMART deployのどちらを使うかをはっきりさせた方が良い様
です。
現状の設定ファイルには、両方の書き方が混ざっています。

AutoRegister…クラス名やパッケージ名の一致するクラスを自動的にdiconに登録す
る。
SMART deploy…規約にそったパッケージ構成、クラス名のクラスを自動的にdiconに
登録する。

 AutoRegisterはSeasar2.3以降、SMART deployはSeasar2.4以降でサポートされてい
る方法
です。

 AutoRegisterでやろうとしているとするとFAQの方のやり方で、SMART deployでや
る場合は、
ブログに書かれたようなやり方になります。

 使おうとしているSeasar2のバージョンなどを教えていただけると、もうちょっと
実際のファ
イルにそった回答ができると思いますので教えていただけますでしょうか。よろしく
お願い致
します。


林 祐一郎 wrote:
> 本間さま
> せとさま
>
> いつも、お世話になっております。
> 林祐一郎と申します。
>
> 以前の回答後、こちらでテストを実施してみたのですが、
>  『dao.dicon の中で先に include したほうのDB
>   の方にしか見に行けていない。
>   (includeする順序を入れ替えると見る事が出来る方が逆になる)』
> というところが改善されません。。。
>
> 私どもの設定ファイルが悪いのかも、と判断し、
> 以下に、設定ファイル(今回修正した分を含む)を
> 記載いたします。
>
> 力不足で申し訳ありません。
> お気づきの点などありましたら、
> ご回答お願いいたします。
>
> (以下のページなどを、今回の修正用に参考としました。
>  http://d.hatena.ne.jp/JUNDU/20060620/1150814260
>  http://www.seasar.org/wiki/index.php?FAQ%2FS2DAO#q70fa8ce
>>
> 【app.dicon】
> <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE components PUBLIC
> "-//SEASAR2.1//DTD S2Container//EN"
> "http://www.seasar.org/dtd/components21.dtd">
>
> <components>
>     <include path="jp/com/AAA/BBB/db/dao/CCCDatabase.dicon"/>
> </components>
>
> 【CCCDatabase.dicon】
> <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE components PUBLIC
> "-//SEASAR2.1//DTD S2Container//EN"
> "http://www.seasar.org/dtd/components21.dtd">
>
> <components namespace="CCCDb">
>
> 	<include path="dao.dicon"/>
> 	<include path="j2ee.dicon"/>
>
> 	<component
> class="org.seasar.framework.container.autoregister.FileSystemComponent
> AutoRe
> gister">
> 		<initMethod name="addClassPattern">
> 			<arg>"jp.com.AAA.BBB.db.dao"</arg>
> 			<arg>".*Dao"</arg>
> 		</initMethod>
> 	</component>
>
> 	<component
> class="org.seasar.framework.container.autoregister.AspectAutoRegister">
> 		<property name="interceptor">dao.interceptor</property>
> 		<initMethod name="addClassPattern">
> 			<arg>"jp.com.AAA.BBB.db.dao"</arg>
> 			<arg>".*Dao"</arg>
> 		</initMethod>
> 	</component>
>
> 	<component
> class="org.seasar.framework.container.autoregister.FileSystemComponent
> AutoRe
> gister">
> 		<initMethod name="addClassPattern">
> 			<arg>"jp.com.AAA.BBB.db.manager"</arg>
> 			<arg>".*Mgr"</arg>
> 		</initMethod>
> 	</component>
>
> 	<component
> class="org.seasar.framework.container.autoregister.FileSystemComponent
> AutoRe
> gister">
> 		<initMethod name="addClassPattern">
> 			<arg>"jp.com.AAA.BBB"</arg>
> 			<arg>".*Business"</arg>
> 		</initMethod>
> 	</component>
>
> 	<component
> class="org.seasar.framework.container.autoregister.AspectAutoRegister">
> 		<property name="interceptor">j2ee.requiredTx</property>
> 		<property
> name="pointcut">"update.*,insert.*,execute.*"</property>
> 		<initMethod name="addClassPattern">
> 			<arg>"jp.com.AAA.BBB"</arg>
> 			<arg>".*Business"</arg>
> 		</initMethod>
> 	</component>
>
>      ↓↓↓修正部分(付け加えました。)↓↓↓
> 	<component name="dao1SupportAspectCustomizer"
> class="org.seasar.framework.container.customizer.AspectCustomizer">
> 		<property name="interceptor">"dao1.interceptor"</property>
> 		<initMethod name="addClassPattern">
> 			<arg>"jp.com.AAA.BBB.db.dao.dao1"</arg>
> 			<arg>".*Dao"</arg>
> 		</initMethod>
> 		<initMethod name="addIgnoreClassPattern">
> 			<arg>"jp.com.AAA.BBB.dao.dao2"</arg>
> 			<arg>".*Dao"</arg>
> 		</initMethod>
> 	</component>
>
> 	<component name="dao2SupportAspectCustomizer"
> class="org.seasar.framework.container.customizer.AspectCustomizer">
> 		<property name="interceptor">"dao2.interceptor"</property>
> 		<initMethod name="addClassPattern">
> 			<arg>"jp.com.AAA.BBB.db.dao.dao2"</arg>
> 			<arg>".*Dao"</arg>
> 		</initMethod>
> 		<initMethod name="addIgnoreClassPattern">
> 			<arg>"jp.com.AAA.BBB.dao.dao1"</arg>
> 			<arg>".*Dao"</arg>
> 		</initMethod>
> 	</component>
>
> 	<component name="daoCustomizer"
> class="org.seasar.framework.container.customizer.CustomizerChain">
> 		<initMethod name="addCustomizer">
> 			<arg>defaultCustomizer</arg>
> 		</initMethod>
> 		<initMethod name="addCustomizer">
> 			<arg>dao1SupportAspectCustomizer</arg>
> 		</initMethod>
> 		<initMethod name="addCustomizer">
> 			<arg>dao2SupportAspectCustomizer</arg>
> 		</initMethod>
> 	</component>
>      ↑↑↑修正部分(付け加えました。)↑↑↑
> </components>
>
> 【j2ee.dicon】
> <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE components PUBLIC
> "-//SEASAR2.1//DTD S2Container//EN"
> 	"http://www.seasar.org/dtd/components21.dtd">
> <components namespace="j2ee">
> 	<component name="transactionManager"
> 		class="org.seasar.extension.jta.TransactionManagerImpl"/>
> 	<component name="requiredTx"
> 		class="org.seasar.extension.tx.RequiredInterceptor"/>
> 	<component name="requiresNewTx"
> 		class="org.seasar.extension.tx.RequiresNewInterceptor"/>
> 	<component name="mandatoryTx"
> 		class="org.seasar.extension.tx.MandatoryInterceptor"/>
> <!--
> 	<component name="notSupportedTx"
> 		class="org.seasar.extension.tx.NotSupportedInterceptor"/>
> -->
>
> 	<component
> class="org.seasar.extension.jdbc.impl.BasicResultSetFactory"/>
> 	<component
> class="org.seasar.extension.jdbc.impl.BasicStatementFactory"/>
> <!--
> 	<component
> class="org.seasar.extension.jdbc.impl.OracleResultSetFactory"/>
> 	<component
> class="org.seasar.extension.jdbc.impl.BooleanToIntStatementFactory"/>
> -->
> </components>
>
> 【dao.dicon】
> <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE components PUBLIC
> "-//SEASAR2.1//DTD S2Container//EN"
> 	"http://www.seasar.org/dtd/components21.dtd">
> <components namespace="dao">
> 	<include path="dao1.dicon"/>
> 	<include path="dao2.dicon"/>
> </components>
>
> 【dao1.dicon】←←←今回作成したファイル←←←
> <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE components PUBLIC
> "-//SEASAR2.1//DTD S2Container//EN"
> 	"http://www.seasar.org/dtd/components21.dtd">
> <components namespace="dao1">
> 	<include path="jdbc1.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"/>
> 	<component
> 		class="org.seasar.dao.impl.ValueTypeFactoryImpl"/>
> 	<component
> 		name="stringClobType"
> 		class="org.seasar.extension.jdbc.types.StringClobType"/>
> </components>
>
> 【dao2.dicon】←←←今回作成したファイル←←←
> <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE components PUBLIC
> "-//SEASAR2.1//DTD S2Container//EN"
> 	"http://www.seasar.org/dtd/components21.dtd">
> <components namespace="dao2">
> 	<include path="jdbc2.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"/>
> 	<component
> 		class="org.seasar.dao.impl.ValueTypeFactoryImpl"/>
> 	<component
> 		name="stringClobType"
> 		class="org.seasar.extension.jdbc.types.StringClobType"/>
> </components>
>
> 【jdbc.dicon】
> <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE components PUBLIC
> "-//SEASAR2.1//DTD S2Container//EN"
> 	"http://www.seasar.org/dtd/components21.dtd">
> <components namespace="jdbc">
> 	<include path="jdbc1.dicon"/>
> 	<include path="jdbc2.dicon"/>
> </components>
>
> 【jdbc1.dicon】←←←今回作成したファイル←←←
>                    ←←←(今までも、使用していたDBの設定ファイル)←←←
> <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE components PUBLIC
> "-//SEASAR2.1//DTD S2Container//EN"
> 	"http://www.seasar.org/dtd/components21.dtd">
> <components namespace="jdbc1">
> 	<include path="j2ee.dicon"/>
> 	<component name="xaDataSource"
> 		class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
> 		<property name="driverClassName">
> 			"oracle.jdbc.driver.OracleDriver"
> 		</property>
> 		<property name="URL">
> 			"jdbc:oracle:thin:@1YY.1YY.1.YYY:YYYY:yyyyy"
> 		</property>
> 		<property name="user">"yyyyyy"</property>
> 		<property name="password">"yyyyyy"</property>
> 	</component>
> 	<component name="connectionPool"
> 		class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
> 		<property name="timeout">600</property>
> 		<property name="maxPoolSize">10</property>
> 		<!-- JTAトランザクションが開始されていない場合にコネクション
>> 			 取得できないようにするには次のプロパティをfalseにし
> てください.-->
> 		<property name="allowLocalTx">true</property>
> 		<destroyMethod name="close"/>
> 	</component>
> 	<component name="dataSource"
> 		class="org.seasar.extension.dbcp.impl.DataSourceImpl">
> 		<arg>connectionPool</arg>
> 	</component>
> </components>
>
> 【jdbc2.dicon】←←←今回作成したファイル←←←
>                    ←←←(今回の対応で、使用する必要ができたDBの設定ファ
イ
> ル)←←←
> <?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE components PUBLIC
> "-//SEASAR2.1//DTD S2Container//EN"
> 	"http://www.seasar.org/dtd/components21.dtd">
> <components namespace="jdbc2">
> 	<include path="j2ee.dicon"/>
> 	<component name="xaDataSource"
> 		class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
> 		<property name="driverClassName">
> 			"oracle.jdbc.driver.OracleDriver"
> 		</property>
> 		<property name="URL">
> 			"jdbc:oracle:thin:@1XX.1XX.1.XXX:XXXX:xxxxx"
> 		</property>
> 		<property name="user">"xxxxx"</property>
> 		<property name="password">"xxxxx"</property>
> 	</component>
> 	<component name="connectionPool"
> 		class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
> 		<property name="timeout">600</property>
> 		<property name="maxPoolSize">10</property>
> 		<!-- JTAトランザクションが開始されていない場合にコネクション
>> 			 取得できないようにするには次のプロパティをfalseにし
> てください.-->
> 		<property name="allowLocalTx">true</property>
> 		<destroyMethod name="close"/>
> 	</component>
> 	<component name="dataSource"
> 		class="org.seasar.extension.dbcp.impl.DataSourceImpl">
> 		<arg>connectionPool</arg>
> 	</component>
> </components>
>
>
> -----Original Message-----
> From: [E-MAIL ADDRESS DELETED]
> [mailto:[E-MAIL ADDRESS DELETED]] On Behalf Of HONMA Hirotaka
> Sent: Wednesday, November 28, 2007 11:19 AM
> To: [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:11826] Re: [S2Dao]S2Daoで複数DBへの接続
>
> 本間@茅場町です。
>
> on Wed, 28 Nov 2007 10:51:05 +0900
> in [Seasar-user:11825] Re: [S2Dao]S2Daoで複数DBへの接続
> 林 祐一郎 <[E-MAIL ADDRESS DELETED]> wrote:
>
> > 切り分けをし、試験をしてみました。
> > 結果は、以下のようになりました。
> >
> > > 複数DB設定ではなく(B)のみへ接続する設定にし、同じクエリを
> > > 発行してみる
> > >
> >  (B)のみへの接続に設定したところ、エラーは発生しませんでした。
> >  しかし、クエリを発行した結果取得件数が3件になるはずのところ
> >  1件も取得できていませんでした。
> >  SQL*Plusで実行した場合には、ちゃんと3件とれてきます。
> >
> > > dicon設定はそのまま(複数DB設定)にして、(B)にあるテーブルを
> > > (A)にも作成してみる
> > >
> >  (B)にあるテーブルを(A)に作成したところ、
> >  『ORA-00942: 表またはビューが存在しません。』というエラーは発生しませ
ん
> でした。
> >
> >  しかし、上記と同じようにSQL*Plusで実行した場合には取得されているはず
> >  のデータが取得されませんでした。
>
> 調査ありがとうございます、
> 問題は1つかと思っていましたが、ひょっとすると2つあるのかも...
>
> (1) 複数DB接続設定がミスっていて、(A)へ接続している
>     ↑2つめの調査でORA-00942が出なくなったため
> (2) SQL自体にも問題がある
>     ↑1つめの調査でSQL*Plusと結果が異なるため
>
> (1)はdiconを見直せば解決できると思います。
>
> (2)は、SQL文とテーブル定義を見るとわかるかもしれません。
> 良くあるケースとしては、CHAR(2)のカラムをwhere句で指定する際
> にパラメータが2文字に満たない場合が考えられます。
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
>
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
>
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>
_______________________________________________
Seasar-user mailing list
[E-MAIL ADDRESS DELETED]
https://ml.seasar.org/mailman/listinfo/seasar-user




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