[Seasar-user:20565] Re: 複数の永続ユニット使用について

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2011年 2月 7日 (月) 00:30:00 JST


小林 (koichik) です.

Date:    Mon, 07 Feb 2011 00:07:34 +0900
From:    oh <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:20564] Re: 複数の永続ユニット使用について

> ということで、やってみました。s2junit4.dicon に TestDataPrepareImpl を二組定義して
(略)
> 実行した結果のスタックトレースが以下です。
> 
> org.seasar.framework.beans.IllegalPropertyRuntimeException: [ESSR0059]クラス(org.seasar.framework.unit.impl.ExpectedDataReaderImpl)のプロパティ(dataAccessor)の設定に失敗しました。理由はorg.seasar.framework.container.TooManyRegistrationRuntimeException: [ESSR0045]interface org.seasar.framework.unit.DataAccessorに複数のコンポーネント(org.seasar.framework.unit.impl.DataAccessorImpl, org.seasar.framework.unit.impl.DataAccessorImpl)が登録されています
(略)
> 同様のエラーのように見えますが。

同様ですね.
同様に

<component class="org.seasar.framework.unit.impl.ExpectedDataReaderImpl">

にも

    <property name="dataAccessor">da1</property>

を追加してください.
同様に,必要なら ExpectedDataReaderImpl も
二組定義してください.
以下同様の現象が発生した場合も同様に対応してください.

> 例えば 対象の EJB 側では sc02 側の EntityManager で取得した managed な entity に
> 変更を加えたとします。一方 DataAccessor では最初に読み込まれた EntityManager(sc01側)
> に flush を発行するといった状態になっているため、sc01 側には managed な entity が存在
> せず flush しても何も更新されないといった現象だろうと思っています。

sc02 側の検証がしたいなら,DataAccessor の
EntityManager だけ変更してもダメで,DataSource も
変えないとダメだということを言ってます.
DataSource を変えないのなら,EntityManager を
変えても意味がないということです.
なんか話が通じないと思ったら,

> こちらですが、DataSource は確かに2つあるのですが、テスト用の環境では
> その接続先が単一の DB となっていたため問題なく動作していたようです。

そういうことでしたか.
各 EntityManager/DataSource が別の DB に
つながるようにすれば自分が書いてきたことも
分かってもらえるんじゃないでしょうか.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
    <property name="twitter">"http://twitter.com/koichik"</property>
</component>



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