- PR -

JOTMを使ってロールバックできない

1
投稿者投稿内容
cyanberry
常連さん
会議室デビュー日: 2005/01/07
投稿数: 37
投稿日時: 2005-05-19 20:52
TOMCAT 5.0.25
MYSQL 4.0.24
JOTM 2.0.10

以上の構成で、DBの分散トランザクションの管理をしようとしていますが、トランザクションをロールバックしても、ロールバックされずコミットされてしまいます。正常にロールバックさせるにはどうしたらよいのでしょうか。

設定、ソースは以下のサイト通りにやりました。(サイトではPostgreSqlで説明していますが)
http://www.stackasterisk.jp/tech/java/jta01_02.jsp

ここで「ut.rollback()」をすれば、INSERTは行われずロールバックされるとありますが、コミットされてしまいます。

オートコミットをオフにして、Connectionのロールバックをした場合は正常にロールバックされます。

Mysqlの設定はほぼデフォルトのままです。

JOTM本家のサイトどおりにもやってみましたが、だめでした。
http://jotm.objectweb.org/doc/index.html

何か思い当たるところがありましたら、なにとぞご教授のほどよろしくお願いいたします。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-05-19 21:14
MySQLをデフォルト、ということはMyISAM型のテーブルになっていると思います。MyISAMでは
トランザクションをサポートできないので、InnoDBもしくはBDB型にしましょう。
http://dev.mysql.com/doc/mysql/ja/table-types.html
cyanberry
常連さん
会議室デビュー日: 2005/01/07
投稿数: 37
投稿日時: 2005-05-20 10:54
テーブルタイプはInnoDB型になっています。
JOTMのトランザクションマネージャを使わないロールバックは正常に動作しておりますので、Mysql側は問題ないかと思っているのですが。

他に何か思い当たるところがあればよろしくお願いします。
cyanberry
常連さん
会議室デビュー日: 2005/01/07
投稿数: 37
投稿日時: 2005-05-20 14:00
自己解決しました。

DBの接続リソースの設定で

<parameter>
<name>factory</name>
<value>org.objectweb.jndi.DataSourceFactory</value>
</parameter>

の部分を追加していませんでした。
さらに、JOTM 2.0.10では
「javax.naming.NamingException: Could not create resource factory instance, null」というエラーが出るようになったので、JOTM 1.5.3に落としたところ、正常に動作するようになりました。
1

スキルアップ/キャリアアップ(JOB@IT)