第18章 トランザクション
18.1. Java トランザクション API のトランザクションについて
JBoss Data Grid は、JTA 準拠のトランザクションの設定、使用および参加をサポートします。しかし、トランザクションサポートを無効にすることは JDBC 呼び出しの自動コミット機能を使用することと同等になります。JDBC 呼び出しでは、レプリケーションが有効になっている場合、各変更の後に変更内容が潜在的にレプリケートされます。
JBoss Data Grid は各キャッシュ操作に対して以下を実行します。
- 最初に、現在スレッドに関連付けされているトランザクションを読み出します。
XAResource
が登録されていない場合は、XAResource
をトランザクションマネージャーに登録し、トランザクションがコミットされたりロールバックされた時に通知を受け取るようにします。
重要
JBoss Data Grid 6.0.x では、リモートクライアントサーバーモードでトランザクションを無効にすることが推奨されます。ただし、
ExceptionTimeout
のエラーが発生し、Unable to acquire lock after {time} on key {key} for requester {thread}
という警告が表示された場合は、トランザクションを有効にします。これは、非トランザクションキャッシュが書き込む各ノードに対するロックを取得するため、起こります。トランザクションを使用すると、キャッシュが単一ノードに対するロックを取得するため、デッドロックが回避されます。
この問題は、JBoss Data Grid 6.1 で解決されました。