[Seasar-user:11119] トランザクション処理について

的場 大輔 [E-MAIL ADDRESS DELETED]
2007年 10月 18日 (木) 20:47:10 JST


お世話になります。的場と申します。


Seasarのトランザクション処理を、実装しようとしているのですが
上手く動きません。
クラスの配置場所や、定義の仕方などが間違っていると思うのですが、
アドバイスいただけませんでしょうか?

環境
s2-framework-2.4.13
s2-dao-1.0.43

-------------------------------------------------------------------------------------
ルートのdao/test内に以下のTestTransactionDaoを格納し、
同パッケージ内にTestTransactionDao.diconを格納しています。

public class TestTransactionDao {

	private AaaDao		aaaDao;			// AAAテーブル更新用Dao
	private BbbDao		bbbDao;			// BBBテーブル更新用Dao

	public TestTransactionDao(AaaDao aaaDao, BbbDao bbbDao)
	{
		this.aaaDao	= aaaDao;
		this.bbbDao	= bbbDao;
	}
	
	public AaaDao getAaaDao() {
		return aaaDao;
	}

	public void setITaskDao(AaaDao aaaDao) {
		this.aaaDao = aaaDao;
	}

	public BbbDao getBbbDao() {
		return bbbDao;
	}

	public void setBbbDao(BbbDao bbbDao) {
		this.bbbDao = bbbDao;
	}
	

	public void insertData(AaaDto aaaDto, Bbb bbbDto)
	{
		this.aaaDao.insert(aaaDto);
		this.bbbDao.insert(bbbDto);

		throw new RuntimeException("a");
		
	}
}

【TestTransactionDao.dicon】
<components>
	<include path="dao.dicon"/>
	<component class="ルート.dao.test.TestTransactionDao">
		<aspect pointcut="insertData">j2ee.requiredTx</aspect>
	</component>
</components>


上記のTransacition処理を

ルートのweb/test/testPage.javaから呼び出しています。

	クラス変数としてトランザクション処理用のインスタンスを定義し、
	プロパティも定義しています。
	private TestTransactionDao testTransactionDao;

	public Class doRun()
	{
		testTransactionDao.insertData(aaaDto, bbbDto);
	}

のように呼び出しています。

以前、doRun内でS2コンテナを初期化し、トランザクション処理用のインスタンスを
自分から取得しに行っていたときには、動作していたのですが、
他の問題で質問させていただき、コンテナを自分で生成すべきではないと指摘いただき、
上記のようなつくりに変えました。
これにより、トランザクションが働かなくなったと思うのですが、
diconファイルの設定が読込まれていないのでしょうか?

お手数お掛けしますが、お願いします。
また、足りない情報等ございましたら、ご指摘ください。


以上、宜しくお願いします。






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