- - PR -
connectionがUserTransactionに結びつかない。
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-01-28 21:27
現在
http://www.stackasterisk.jp/tech/java/jta02_01.jsp を参考に TOMCAT5.5 JOTM JDK1.5 eclipce3.0 lomboz plugin で開発をしています。 JTAを使用したトランザクション管理をしたいのですが、 connectionがUserTransactionに関連付けができていないようなのです。 現象としては、 connectionのautoCommitがonの場合。 roolbackしても、DBへ値が更新されてしまう。 connectionのautoCommitがoffの場合。 userTransaction.commit()を呼び出しても更新されない。 要は、connectionそれぞれが、それぞれトランザクションを管理してるみたいで JTAがまったく機能していない様に感じます。 JTAが働けば、connectionのautoCommit設定は関係ないと思っていたのですが、 この認識は誤っているでしょうか? 処理順序としては、 0、トランザクション取得 1、トランザクションスタート 2、データソースからコネクション取得 3、DB更新処理 4、コミット 5、コネクションクローズ です。 getStatus()でステータスを確認したところ、 トランザクションスタート以前では、STATUS_NOTRANSACTION:6 bigin()でスタート後は、STATUS_ACTIOVE:0 commit()でコミット後は、STATUS_NOTRANSACTION:6 コミット後は、STATUS_COMMITTED:3になると思うのですが、ステータスがおかしいです。 同じ現象のが発生していたり、解決できた方いらっしゃいましたら、ヘルプお願いします。 宜しくお願いします。 [ メッセージ編集済み 編集者: せぶん 編集日時 2005-01-28 21:36 ] |
|
投稿日時: 2005-01-28 21:52
こんにちは。
JTAの仕様では、 0、トランザクション取得 1、トランザクションスタート 2、データソースからコネクション取得 3、DB更新処理 4、コネクションクローズ 5、コミット だと思います。 試してみては如何でしょうか。 |
|
投稿日時: 2005-01-28 22:23
pascalさん
レスありがとうございます。 コネクションクローズのタイミングを変更して見ましたが、 現象は変わりませんでした。 ちなみに、rollbackしてもステータスがSTATUS_NOTRANSACTION:6 です。STATUS_ROLLEDBACK:4になりそうなものなのですが。。。 DBUtilsを使用しているのですが、これが悪さしていたりするのでしょうか? |
|
投稿日時: 2005-01-31 00:12
JTAでトランザクション境界設定をするつもりならば、javax.sql.XADataSourceとjavax.sql.XAConnection、それにjavax.sql.XAResourceインターフェースを実装した JDBCドライバーが必要です。
と言った文面を見つけました。現在MSSQLを使用しているのですが、 Microsoftのドライバーが上記の条件を満たしていないと言うことはあるのでしょうか? http://www.microsoft.com/downloads/details.aspx?FamilyID=9f1874b6-f8e1-4bd6-947c-0fc5bf05bf71&DisplayLang=ja ここから落としたDriverを使用しています。 |
|
投稿日時: 2005-01-31 01:06
こんにちは。
可能性はありますね。 ドライバーをダウンロードしたページに、mssqlserverJPN.tarというのがありますね。 それを展開すると、中にmsjdbc.tarというファイルがあって、それを展開すると、 books\Msjdbcrefというディレクトリが出来ます。 その中のPDFに、Installing Stored Procedures for JTAという章があります。 詳しく読んでいませんが、これがあるということは、デフォルトではサポートしない ってことではないでしょうか。 MSSQLServerはあまり詳しくないので、良くわかりませんが。 Weblogicのページですが、こんなのもあります。 http://edocs.beasys.co.jp/e-docs/wls/docs81/jdbc_drivers/mssqlserver.html#1056938 [ メッセージ編集済み 編集者: pascal 編集日時 2005-01-31 01:10 ] [ メッセージ編集済み 編集者: pascal 編集日時 2005-01-31 01:14 ] |
|
投稿日時: 2005-02-02 12:07
こんにちは。
ちょっと開発スケジュールが詰まっていて、 調査に避ける時間があまりなく、ちょっとテンパってます。 ドライバーの調査はまだしていないのですが、 なんとなく、JBOSSでアプリを起動してみたところ。 UserTransactionはコミット、ロールバックは正常に動作しました。 ただ、UserTransactionのstatus()を確認したところ、値は怪しい気がします。 tomcatで動作している時と、変わりありませんでした。 テンパってるところでの作業でしたので、後ほど再確認します。 JBOSSで動作すると言う事であれば、ドライバーは一応動作しているのかと思いました。 以上、現状報告です。 |
|
投稿日時: 2005-02-02 12:39
今日たまたまMSSQLのJDBCドライバのSP3をインストールしてみたのですが、
インストールディレクトリにSQLServer JTAというディレクトリがありました。 中にはDLLと拡張ストアドのインストール用SQLファイルが入っています。 これはインストールされましたか? |
|
投稿日時: 2005-02-03 22:35
レスありがとうございます。
フォルダありました。注意不足でした。 OSQL -U sa -P sa_password -S server_name -i location\instjdbc.sql このような感じでインストールですよね? ですが、うまくインストールできません。 コマンドを打っても反応がありません。 上記のコマンドで何か間違っているでしょうか? |