[seasar-dev:646] Re: S2Dao+Seasar2のtrunkでテストが通らない

Koichi Kobayashi koichik @ improvement.jp
2007年 3月 3日 (土) 02:00:34 JST


小林 (koichik) です.

Date:    Fri, 2 Mar 2007 23:07:47 +0900
From:    Seto Azusa <azusa @ fieldnotes.jp>
To:      seasar-dev @ ml.seasar.org
Subject: [seasar-dev:645] S2Dao+Seasar2のtrunkでテストが通らない

> S2Daoのhead(https://www.seasar.org/svn/s2dao/branches/s2dao-1.0.x/)と
> Seasar2のtrunkを組み合わせるとテストが通らないのですが、
> (2.4.10及び2.3.14の組み合わせは通る)
> j2ee.dicon等の記述に変更が必要でしょうか?
> 
> org.seasar.framework.container.IllegalAutoBindingPropertyRuntimeException: [ESSR0080]クラス(org.seasar.extension.tx.RequiredInterceptor)のプロパティ(userTransaction)の自動設定に失敗しました

ぐはぁっ.

j2ee.dicon の変更が必要というか,変更のしようが
ないというか...

この問題は,先日 S2Tx を変更したことが原因です.
AP サーバによっては TransactionManager を使うことに
制約があったりするので,基本的な操作は UserTransaction を
使うようにしたのです.

んで,S2.4 の jta.dicon (j2ee.dicon からインクルードされる)
では,以前から TransactionManager と共に UserTransaction も
設定されているため,利用者は特に意識しなくても
問題なく動くはず.

一方,S2.3 にはこの変更は入れてないのだけど,もし
取り込んだとしても,S2.3 の TransactionManagerImpl は
UserTransaction も実装しているため,利用者は特に
意識しなくても問題なく動くはず.

よーするに,S2.3 の dicon で S2.3 を使うとか,
S2.4 の dicon で S2.4 を使うなら問題ないのです.

しかし,S2Dao は S2.3 の dicon で S2.4 を使ってるわけね.
そうすると,S2.3 の dicon には TransactionManager しか
定義してなくて UserTransaction がいないので,上の現象に
なります.
かといって,UserTransaction を定義すると S2.3 ではそんな
クラスはないから動かなくなります.

結論として,S2.3 で動かすときには j2ee.dicon,
S2.4 で動かすときには jdbc.dicon を使うように
するのが妥当ではないかと.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"koichik @ improvement.jp"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



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