[Seasar-user:2023] トランザクションのロールバックについて

Shotaro Tsubouchi shotaro.tsubouchi
2005年 5月 25日 (水) 19:04:03 JST


こんにちわ。坪内です。
#遅れ馳せながらS2.2.8でのログ出力の対応ありがとうございました。

またその辺りでの問題なのですが、
エラー時などにtm.rollback()でトランザクションをロールバックしているのですが、
どうもhibernateのセッションがクローズされない?のか、
ロールバック後の動作が著しく怪しい状態です。。
別のトランザクションが始まってDBアクセスがあってもコネクションの取得がされず、

Caused by: org.seasar.framework.exception.SSQLException: [ESSR0062]コネクションは既に閉じています
	at org.seasar.extension.dbcp.impl.ConnectionWrapperImpl.assertOpened(ConnectionWrapperImpl.java:93)
	at
org.seasar.extension.dbcp.impl.ConnectionWrapperImpl.prepareStatement(ConnectionWrapperImpl.java:112)
	at net.sf.hibernate.impl.BatcherImpl.getPreparedStatement(BatcherImpl.java:263)

となってしまいます。
コミットの際にはorg.seasar.hibernate.S2Session#closeが実行されるのですが、
ロールバックだと、org.seasar.hibernate.impl.S2SessionFactoryImpl#afterCompletionで
呼ばれているはずなのに、なぜか実行されないようです。。というところまでは追えました。
出るようになった論理コネクション解放のログも、ロールバック時には出ません。

各バージョンは以下の通りです。
S2-2.2.8
S2Hibernate-1.0.6b4
S2Struts-1.1.5
Struts-1.2.4
Hibernate-2.1.8

何かわかりますでしょうか?
よろしくお願いします。




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