[Seasar-user:962] Re: 複数のdataSourceとS2TestCase
Yasuo Higa
higa
2004年 8月 27日 (金) 16:43:31 JST
<[E-MAIL ADDRESS DELETED]> の、
"[Seasar-user:960] 複数のdataSourceとS2TestCase" において、
"Hikaru Taniguchi <[E-MAIL ADDRESS DELETED]>"さんは書きました:
ひがです。
> tanigonです。
>
> (以下 @S2.0.16)
>
> いま 複数のDataSourceを使うような j2ee.dicon状態になっていて(実際に接続
> 先のデータベースも複数に渡る)、これをテストする時に
>
> ...TooManyRegistrationRuntimeException:
> [ESSR0045]interface javax.sql.DataSourceに複数のコンポーネントが登録されています
>
> if (container_.hasComponentDef(DataSource.class)) {
> dataSource_ = (DataSource) container_
> .getComponent(DataSource.class);
> } else if (container_.hasComponentDef(DATASOURCE_NAME)) {
> dataSource_ = (DataSource) container_
> .getComponent(DATASOURCE_NAME);
>
> ここみたいなのですが、複数のDataSourceを入れている場合に確実に 1つ目の
> if()で例外になってしまい dataSource_ がセットされないのですが、 2つ目の
> if()と順序を入れ替えるのをS2TestCaseの標準とする、ってのはダメでしょうか。
修正します。
>
> あと、今回のテストケースの場合、複数のデータベースに跨ってテスト用のデー
> タを準備する必要がありますが、S2TestCaseの仕様上一つのDataSourceしか補助
> ?対象としてくれないので、protectedな setterかなにかがあると助かるのです
> がいかがでしょうか (現状 datasource_ は private scope)
>
TestCaseの中にprivate DataSource dataSource2_とか作れば済むような。
>
> # 複数のdataSourceを使うようなクラスの試験の場合 testHogeTx()なんかでト
> # ランザクション勝手によろしく!が使えないんですよね、多分。やっぱムリが
> # あるのかなあ... > dataSource
>
複数データソースがあっても同じトランザクションマネージャに
登録されていれば、大丈夫(両方ロールバックする)だと思います。
---
Yasuo Higa <[E-MAIL ADDRESS DELETED]>
INFORMATION SERVICES INTERNATIONAL-DENTSU,LTD.
Seasar-user メーリングリストの案内