[Seasar-user:16139] Re: [s2blazeDS]s2jdbcのトランザクションの範囲について

山田 祐己 [E-MAIL ADDRESS DELETED]
2008年 10月 27日 (月) 15:46:01 JST


ひがさん、小林さん

お世話になります。山田です。

> トランザクションがデータソースと結びついていないんだと思います。
> データソースは、Seasar2(S2DBCP)のものを使っていますか。
> commons-dbcpのものだと、トランザクションと連携することはできません。

Tomcat側のデータソース設定は特に変更をしていませんので、
デフォルトの物を使用しています。お二人のご指摘ですとそれが原因の様子ですが、
その対応方法をどの様にすれば良いのかご指南を頂けますと幸いです。

現在の設定は以下の通りです。
tomcat側のserver.xmlより抜粋

<Resource name="jdbc/hogehoge"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.ibm.db2.jcc.DB2Driver"
loginTimeout="3"
maxActive="20"
maxIdle="10"
maxWait="-1"
username="hoge"
password="hoge"
testOnBorrow="true"
driverType="4"
defaultAutoCommit="false" ←先ほど追加したら自動commitは無くなったが、最
終commitもしなくなった。
url="jdbc:db2://locaohost:50000/hoge" />


jdbc.diconより抜粋
<component name="dataSource"
class="javax.sql.DataSource">
@[E-MAIL ADDRESS DELETED]("java:comp/env/jdbc/hogehoge")
</component>

また、現状、開発にはtomcatを使用していますが、本番環境はwebsphere6.1を使
用する予定です。
tomcat、Was双方で設定の方法が異なるようでしたら合わせてご指南を頂けます
と幸いです。
照会ばかりで大変恐縮です。
よろしくお願いいたします。

以上

山田 祐己(Yuki Yamada)
E-Mail [E-MAIL ADDRESS DELETED]

Yasuo Higa さんは書きました:
> ひがです。
>> お世話になります。山田です。
>>
>>> S2BlazeDSのサンプルのように設定しておけば、
>>> Serviceには自動的にトランザクションがかかっているはずです。
>> S2BlazeDSのブランクプロジェクトを使用していますので、
>> Serviceの設定も既に記載していました。
>> また、先ほど説明が足りませんのでしたので、補足しますと、
>> ひとつのメソッド内で、検索、登録、検索、削除と行って、
>> その際に、例外が発生してロールバックのログが出ているのですが、
>> レコードはcommitされていたという事象です。
>> その際のログを添付します。
>> デバッグトレースでステップ実行した場合でも、やはりSQL単位で
>> commitが実行されているようです。
>>
> トランザクションがデータソースと結びついていないんだと思います。
> データソースは、Seasar2(S2DBCP)のものを使っていますか。
> commons-dbcpのものだと、トランザクションと連携することはできません。
>
> 上記のことが原因でないなら、
> jdbc.diconを見せていただくのが早いかもしれませんね。
>
> よろしくお願いします。
>
>
>> 何か設定で問題となる内容がありますでしょうか。
>>
>> 当方の開発環境は以下の通りです。
>> jdk:1.5
>> DB:DB2
>> サーブレットコンテナ:tomcat6.0
>> jdbc接続はデータソース経由です。
>>
>> お手数をお掛けして恐縮ですが、ご指南を戴けますと幸いです。
>>
>> 宜しくお願いいたします。
>>
>> 以上
>>
>> 山田 祐己(Yuki Yamada)
>> E-Mail [E-MAIL ADDRESS DELETED]
>>
>>
>>
>>
>> DEBUG 2008-10-27 13:33:54,140 [http-8400-1] トランザクションを開始し
>> ました。tx=[FormatId=4360, GlobalId=1225082015015/43, BranchId=]
>> DEBUG 2008-10-27 13:33:59,280 [http-8400-1] select 以下省略...
>> DEBUG 2008-10-27 13:34:10,593 [http-8400-1] insert into Foo 以下省略...
>> DEBUG 2008-10-27 13:34:12,577 [http-8400-1] select 以下省略...
>> DEBUG 2008-10-27 13:34:16,609 [http-8400-1] delete from Baa 以下省略...
>> DEBUG 2008-10-27 13:34:28,390 [http-8400-1] トランザクションをロール
>> バックしました。tx=[FormatId=4360, GlobalId=1225082015015/43, BranchId=]
>> Throwable:java.lang.NullPointerException




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