フェーズ
1 (prepare)
2PC 処理の流れ
トランザクション マネージャ
リソース マネージャ1
リソース マネージャ2
データベース1
アプリケーション
Agenda
• 分散トランザクションとは?
• Java Transaction API
•
分散トランザクションとは?• WebLogic Server のトランザクション設定
•
ドランザクションの設定•
モニタリング•
リソースの設定トランザクションの設定
• トランザクションサービスは WebLogic Server 起動時 に開始される
•
トランザクションの設定•
ドメイン・レベルで設定を行う•
ドメインで同じトランザクション設定を使用•
トランザクションのモニタリング•
サーバ・レベルでモニタリングを行う•
管理コンソール, WLST …
•
参加リソース(JDBC
データソースなど)
の設定•
リソース・レベルで設定を行うトランザクション設定
トランザクション開始からフェーズ
1
完 了までの持続時間。この時間を超える とTX
はタイムアウトし、ロールバック されるTM
が新しいトランザクションログを作 成し、古いトランザクションログを破 棄するかどうかを確認する間隔[10.3.3.0
~]
トランザクションのフェ ーズ2
のタイムアウト時間。デフォ ルト(0)
はtransaction-timeout x 2(
秒)
トランザクションログ
• 未完了のトランザクション情報を格納するログ
•
トランザクションログはバイナリ形式のため、直接見ること はできない•
トランザクションログはサーバのデフォルト永続ストアに格 納される•
デフォルト永続ストア$DOMAIN/servers/<Server_Name>/data/store/default/_WLS_ <Server_Name>000000.DAT
• WLS12c
ではJDBC
ストアを使用可能(
後述)
•
サーバごとに設定変更可能トランザクションログのダンプ
• $ java weblogic.transaction.internal.StoreTransactionLoggerImpl [-delete] <tlog_dir_path> <server_name>
• Options
• -delete … TLOG
からすべてのエントリを削除• <tlog_dir_path> … TLOG
ストアディレクトリ(=
デフォルト永続ストア)
へのパス• <server_name> …
サーバ名+--- +
| Transaction Log Dump | | +---+ |
| Current time = Tue Mar 27 13:46:00 JST 2012 |
| Current directory = "C:¥work¥domains¥12c_domain¥." | +--- +
| Class Name = weblogic.transaction.internal.ResourceCheckpoint |
| Object = ResourceCheckpoint={{derbyDataSource_12c_domain, props={}}, {xeDataSource_12c_domain, props={}}} | +--- +
| Class Name = weblogic.transaction.internal.ServerTransactionImpl |
| Object = Xid=BEA1-002118629B698CC6CD64(1013226416),Status=Active,numRepliesOwedMe=0,numRepliesOwnedOthers= |
| 0,seconds since begin=33,seconds left=30,XAServerResourceInfo[xeDataSource_12c_domain]=(ServerResourceInfo |
| [xeDataSource_12c_domain]=(state=new,assigned=none),xar=null,re-Registered = false),XAServerResourceInfo[d |
| erbyDataSource_12c_domain]=(ServerResourceInfo[derbyDataSource_12c_domain]=(state=new,assigned=none),xar=n |
JDBC TLOG ストア (WebLogic Server 12c)
• TLog をデータベースに永続化可能
• TLog
用高信頼性ストレージの代替•
障害復旧の容易性の向上(
アプリケーションデータ, JMS, TLOG
をDB
に一括格納可能)
デフォルト・ストアもしくは
JDBC
データソースを指定する
-
グローバルトランザクション非サポート(
非XA)
のデータソースを指定-
ストア先のDB
にアクセス出来ないと起動に失敗 するトランザクションのモニタ
• トランザクションのモニタはサーバ・レベルで行う
•
トランザクション統計(JTARuntimeMBean/JTATransactionStatisticsRuntimeMBean)
•
トランザクションログストア統計(TransacitonLogStoreRuntimeMBean)
•
リソースごとのトランザクション統計• XA (TransactionResourceRuntimeMBean)
•
非XA
リソース(NonXAResourceRuntimeMBean)
•
回復サービス(RecoveryRuntimeMBean)
•
現在のトランザクション(JTARuntimeMBean
のJTATransactions
属性)
トランザクションモニタ
実行中のトランザクション
トランザクションの手動解決
• 実行中のトランザクションは手動解決可能
•
障害対応用として使用•
ローカルオプションとグローバルオプション•
ローカル:
該当のサーバリソースにのみ影響•
グローバル:
グローバルトランザクションに参加する全サーバに影響•
トランザクションのステータスによって行える処理が異なるステータス 強制コミット 強制ロールバック ステータス 強制コミット 強制ロールバック
アクティブ ○ ロールバック中 ○
準備中 ○ ロールバック完了 ○
準備完了 ○ ○ マーク済ロールバック ○
コミット中 ○ トランザクションなし
ヒューリスティックな終了
• 2PC 処理中に RM による一方的な決定 (commit/rollback) が 行われた状態
•
インダウト中のTM
障害や、トランザクション破棄、トランザ クションの手動解決などにより発生•
ヒューリスティックな終了の状態によってスローされる例外 が異なるヒューリスティックな決定 説明