WebLogic Server トランザクションの基本 - Oracle

第87回 夜な夜な! なにわオラクル塾
WebLogic Server勉強会@大阪
<Insert Picture Here>
WebLogic Server勉強会へようこそ
日本オラクル株式会社
2012年8月8日
「WebLogic Server勉強会」とは
By developers, for developers
ユーザ企業、システムインテグレータ、ベンダーのそれぞれの立場を超
えたWebLogic開発者同士の繋がり
WebLogicアプリケーション開発者のための勉強会
スキルアップ
先人の成功・失敗談を共有
開発者間のネットワーキング
Team WebLogic
「やっぱり、WebLogic!」コミュニティが熱い!
「WebLogicつながり」の輪を広げよう!
最新情報
 Oracle Technology Network:
http://www.oracle.com/technetwork/jp/middleware/weblogic/community/index.html
Copyright ©2012, Oracle. All rights reserved.
2
アジェンダ(2012年8月8日)
18:30-18:35
オープニング
18:35-19:20
「Oracle WebLogic Serverの管理入門」
各機能のポイントのみを初心者向けにピックアップして説明します。WebLogic
Serverドメイン定義、管理サーバと管理対象サーバ、管理モードと運用モード、管理
コンソールの使い方、デプロイメント、JDBCデータソース設定などの運用管理のポイ
ントを解説します。
日本オラクル Fusion Middleware事業統括本部 ビジネス推進本部
佐々木 政和
19:20-19:30
休憩
19:30-20:10
「Oracle WebLogic Server トランザクションの基本」
後半は、分散トランザクションの基本概念とWebLogic Serverにおける
トランザクション処理を説明します。WebLogic Serverのトランザクション設定
やモニタ方法とトランザクション回復 サービスなどの障害発生時の対応の
ポイントを解説します。
20:10-20:30
Quiz, Q&A
Copyright ©2012, Oracle. All rights reserved.
3
次回のご案内
2012年11月14日、開催予定
アジェンダ調整中:ご要望はアンケートに!
Lightning Talksセッション
皆様の体験談、自慢話(失敗談も)募集中
5分程度で情報共有
過去のネタ(例)
 メモリ不足でバグを疑う前に
 メモリーリークとの戦い
 管理系コマンドのTIPS
 など
アンケートに○を書いてください。詳細は別途ご相談
Copyright ©2012, Oracle. All rights reserved.
4
<Insert Picture Here>
WebLogic Server 管理入門
日本オラクル株式会社
2012年8月8日
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するもので
す。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み
込むことはできません。以下の事項は、マテリアルやコード、機能を提供す
ることをコミットメント(確約)するものではないため、購買決定を行う際
の判断材料になさらないで下さい。オラクル製品に関して記載されている機
能の開発、リリースおよび時期については、弊社の裁量により決定されます
。
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。
Copyright© 2012, Oracle. All rights reserved.
2
目標
• WebLogic Severの概要を理解し、運用管理の基本を学ぶ。
• ステップ1
• Java EEとWebLogic Serverの関係、開発者と管理者の役割
• ステップ2
• ドメイン、管理サーバ、管理対象サーバの作成、役割を学ぶ
• ステップ3
• アプリケーションのデプロイ方法を学ぶ
• ステップ4
• データソース、接続プールの概要を学ぶ
Copyright© 2012, Oracle. All rights reserved.
3
Agenda
•
•
•
•
WebLogic ServerとJava EE
ドメインのポイント
デプロイメントのポイント
データソースのポイント
Copyright© 2012, Oracle. All rights reserved.
4
WebLogic Server の歴史
WebLogic Server の開発ポリシー
• 最新のJava SE/EE標準に、
ミッションクリティカル環境で使える品質で対応
• Java SE/EE標準が未だカバーしていない、
ミッションクリティカル環境で必要とされる
WebLogic 12c
拡張機能を併せて提供
 Java EE 6
WebLogic 11g
WebLogic 10.x
WebLogic 9.x
WebLogic 8.1
 J2EE 1.3
 J2SE 1.4.2
 コア機能強
化
• ミッション・クリテ
ィカルシステムJ2EE
基盤としての機能を
確立
 J2EE1.4
 JavaSE 5
 ゼロダウン
タイム
• 計画外停止の最小化
に加えて計画停止も
最小化。厳しい運用
要件にも柔軟に対応
 Java EE 5
 Java SE 5&6
 オラクル製
品との連携
• オラクルDB連携
• Enterprise Manager
による一元管理
• インメモリ技術との
連携
 Java SE 7
 Java EE 5&6
 ミッショ
 Java SE 6
ン・クリテ
 オラクル製
ィカル性の
品との統合、 強化
サン製品と
の連携
• RAC連携強化: 耐障害
• Oracle iASとの統合
• Oracle RACとの親和
性強化
• Java技術(JRockit)
の強化
• Sun Javaとの連携、
統合
Copyright© 2012, Oracle. All rights reserved.
性及びスループット
向上
• 更なる高速化
• 運用管理性の強化
WebLogic Server 製品ラインナップ
WebLogic Server
Standard Edition
WebLogic Server
Enterprise Edition
WebLogic Suite
オラクルデータベース連携
オラクルデータベース連携
オラクルデータベース連携
• 1st target DBとしての出荷時検証
• 1st target DBとしての出荷時検証
• 1st target DBとしての出荷時検証
• Enterprise Manager
• Enterprise Manager
• Flight Recorder
• Flight Recorder
• Enterprise Manager
• Flight Recorder
• Oracle RAC連携: 高度な負荷分散
機能、自律的な障害対応
ミッションクリティカル機能
ミッションクリティカル機能
• Java SE のサポート
• Java SE のサポート
ミッションクリティカル機能
• 無停止再デプロイ
• 無停止再デプロイ
• Java SE のサポート
• 自動チューニング
• 自動チューニング
• 無停止再デプロイ
• クラスタリング
• クラスタリング
• 自動チューニング
最新のJava標準に対応
最新のJava標準に対応
• インメモリ・ソリューションの統合
• Java EE 6, Java SE 7 に対応
• 高い開発生産性、長期利用、将来
性
• Java EE 6, Java SE 7 に対応
• 高い開発生産性、長期利用、将来
性
最新のJava標準に対応
• クラスタリング
Copyright© 2012, Oracle. All rights reserved.
• リアルタイムJVM: GC停止制御
• Java EE 6, Java SE 7 に対応
• 高い開発生産性、長期利用、将来
性
WebLogic ServerとJava EE
WebLogic Server
セキュリティ・レルム
JNDI
ATN
Plug In
ATZ
LDAP
Auditor
JNDI
Web Container
EJB Container
JAAS
Java EE
アプリケーション
Servlet JSF JSP
EJB
JDBC
JPA
JDBC
データソース
Web
サーバ
RDBMS
JTA
JMS
RMI
JMSサーバ
Destination
トランザクション
マネージャ
(Queue /Topic)
Copyright© 2012, Oracle. All rights reserved.
7
開発者と運用担当者の役割
• アプリケーション開発者:
• Java EE 標準仕様に則って実装を行う
• APサーバが提供する拡張機能を使うかどうかを検討する
• 運用環境が固定されていれば適用できるケースもあり
• WebLogic Server運用担当者:
• 開発したアプリケーションが適切に動作するように
WebLogic Serverを設定する
• アプリケーションが使用するリソースは何か?
• 非機能要件は?
Copyright© 2012, Oracle. All rights reserved.
8
開発者と運用担当者のスコープ
運用担当者
WebLogic Server
セキュリティ・レルム
JNDI
ATN
Plug In
ATZ
Auditor
LDAP
開発者
Web Container
EJB Container
Java EE
アプリケーション
JMSサーバ
Destination
JDBC
データソース
Web
サーバ
RDBMS
トランザクション
マネージャ
(Queue /Topic)
Copyright© 2012, Oracle. All rights reserved.
9
Agenda
•
•
•
•
WebLogic ServerとJava EE
ドメインのポイント
デプロイメントのポイント
データソースのポイント
Copyright© 2012, Oracle. All rights reserved.
10
ドメインとは?
• WebLogic Serverの管理の単位
• WebLogic で管理される設定はドメイン単位で管理される
• = 設定ファイルが作られる単位
• 論理的な区画設定なので、サーバが稼働する物理境界で区切る必
要はない
• 原則:
「同じ設定を使用するリソースはひとつのドメインで管理」
Copyright© 2012, Oracle. All rights reserved.
11
用語の確認
• ドメイン … リソース管理単位 = 設定の単位
• サーバ … WebLogic Serverインスタンス(=Javaプロセス)
• マシン … H/W境界
• 管理サーバと管理対象サーバ
• 管理サーバ … ドメインの設定を管理する(= configにアクセス
可能な)サーバ。ドメイン内に必ず1つ。
• 管理対象サーバ … 管理サーバから設定情報を取得して起動す
るサーバ。通常は、アプリケーション、サービスのデプロイ
先として使用。
Copyright© 2012, Oracle. All rights reserved.
12
ドメインで管理されるリソース
ドメイン
トランザクション
セキュリティ
マシン
管理サーバ
NM
ログ etc
クラスタ
管理対象サーバ
JMSサーバ
管理対象サーバ
ログ etc
JDBC データソース
ログ etc
アプリケーション
管理対象サーバ
診断モジュール
JMSサーバ
JMSモジュール
ログ etc
設定ファイル
マシン
NM
JMSサーバ
Copyright© 2012, Oracle. All rights reserved.
13
ドメイン構成例
• シングルサーバドメイン
• 開発用途で使用することが多い
ドメイン
ドメインA
ドメインB
サーバ
サーバa
サーバb
APP
APP1
APP2
(管理サーバ)
(管理サーバ)
(管理サーバ)
物理サーバ
物理サーバ
• マルチサーバドメイン
• 運用環境ではこの構成の方が多い
ドメイン
ドメイン
サーバa
(管理サーバ)
サーバb
(管理対象サーバ)
サーバa
(管理サー
バ)
サーバb
(管理対象サ
ーバ)
APP
物理サーバ
物理サーバX
Copyright© 2012, Oracle. All rights reserved.
サーバc
(管理対象サ
ーバ)
APP
サーバd
(管理対象サ
ーバ)
物理サーバY
14
ドメインの作成
• コンフィグレーションウィザード
• $MW_HOME/wlserver_12.1/common/bin/config.sh (cmd)
• GUIをサポートしない環境ではコンソールモードになる
• ドメインに必要なファイルが生成される
• 設定ファイル, 起動スクリプト, セキュリティファイル etc
ドメインの出力先はウィザードで指定可能
ドメイン名: 任意
ドメインの場所: デフォルトは$MW_HOME/user_projects/domains
ファイルは [ドメインの場所/ドメイン名]配下に作成される
Copyright© 2012, Oracle. All rights reserved.
15
ドメインディレクトリ構成
ディレクトリ
1 domain
説明
ドメインディレクトリ (ディレクトリ名=ドメイン名)
0 autodeploy
自動デプロイメントディレクトリ(開発モード用)
0 bin
起動・停止スクリプト etc
0 config
コンフィグレーションディレクトリ
config.xmlが配置される
0 init-info
ドメインの初期化情報
0 lib
共有ライブラリ用ディレクトリ
0 pending
ペンディングコンフィグレーションストア
(編集中のコンフィグレーションの保存先)
0 security
セキュリティファイル (ldift, SerializedSystemIni.dat)
1 servers
サーバローカルディレクトリ
servers配下にサーバごとにディレクトリが作成される
0 server_name
管理サーバ: startWebLogic.sh / stopWebLogic.sh
管理対象サーバ: startManagedWebLogic.sh / stopManagedWebLogic.sh
Copyright© 2012, Oracle. All rights reserved.
16
ドメイン作成のポイント
• ドメイン作成時に決めておきたいこと
• ドメイントポロジ
• サーバ、マシン、クラスタの構成
• JDBCセキュリティストアの設定 (使用する場合)
• 管理サーバのマシン設定はドメイン作成時に行う
• あとで設定するのは難易度高(WLSTオフライン)
• サーバの起動モードは、本番モードが基本
• 開発環境のみ開発モード(OEPE使用時は本番モードでもOK)
• 必要に応じて起動IDファイルを作成
Copyright© 2012, Oracle. All rights reserved.
17
サーバの起動スクリプト
• setDomainEnv.sh (cmd)
ドメイン環境設定
スクリプト
• ドメイン環境設定
管理対象サーバ起動
スクリプト
• MEM_ARGS
• USER_MEM_ARGS
• JAVA_OPTIONS
• Java/WLSオプション指定
CALL
• 起動順 (停止は逆順)
1.
2.
管理サーバ
管理対象サーバ
CALL
$ ./startManagedWebLogic.sh <server_name> <admin_url>
管理サーバ起動
スクリプト
server_name … 起動する管理対象サーバ名
admin_url … 管理サーバのURL (ホスト名, ポート番号)
Copyright© 2012, Oracle. All rights reserved.
18
管理サーバと管理対象サーバ
ドメイン
起動時に設定を取得
マシン
マシン
管理サーバ
管理対象サーバ
MBean
更新・監視
MBean
設定変更
server.log
管理コンソール
設定ファイル
更新・監視
(consoleApp)
管理対象サーバ
MBean
server.log
起動時に読込
server.log domain.log
ドメインログ転送
Copyright© 2012, Oracle. All rights reserved.
19
別マシンでの管理対象サーバの起動
•
管理対象サーバ用テンプレートを作成
1.
2.
3.
WebLogic Serverをインストール
ドメイン作成 (管理サーバ、管理対象サーバ、[マシン])
管理サーバ側マシンでpackコマンド(-managed=true)
•
テンプレートJarファイルが生成される
4. テンプレートJarを管理対象サーバ側のマシンにコピー
5. 管理対象サーバ側のマシンでunpackコマンド
•
管理対象サーバ用テンプレートから復元
6. 管理サーバ / 管理対象サーバ起動
①
マシンA(管理サーバ)
①
マシンB(管理対象サーバ)
WebLogic Serverインストール
WebLogic Serverインストール
② ドメイン作成
ドメイン
③ pack
テンプレートJar
ドメイン
④ コピー
テンプレートJar
Copyright© 2012, Oracle. All rights reserved.
⑤ unpack
20
pack/unpackコマンド
• packコマンド (管理サーバ側)
$ cd $MW_HOME/wlserver_12.1/common/bin
$ ./pack –managed=true –domain=/u01/work/domains/mydomain –
template=/u01/work/domains/mydomain_managed.jar –template_name=mydomain
• unpackコマンド (管理対象サーバ側)
$ cd $MW_HOME/wlserver_12.1/common/bin
$ ./unpack–domain=/opt/domains/mydomain –template=/tmp/mydomain_managed.jar
•
•
•
•
-managed … trueの場合は管理対象サーバ用テンプレート
-domain … ドメインディレクトリ(pack), 展開先ディレクトリ(unpack)
-template … テンプレートJARファイル名
-template_name … テンプレート名(コンフィグレーションテンプレート)
Copyright© 2012, Oracle. All rights reserved.
21
管理コンソール
管理コンソールは管理サーバにだけデプロイされる管理用Webアプリケーション
http://<hostname>:<port>/console
* 自動的にデプロイされるので明示的なデプロイは不要
Copyright© 2012, Oracle. All rights reserved.
22
チェンジセンター
• 管理コンソールで設定作業を行う場合は、チェンジ
センターでコンフィグレーションロックを取得する
必要がある
Copyright© 2012, Oracle. All rights reserved.
23
チェンジセンターのポイント
• チェンジセンターのロック機構はWLSユーザ単位
• 同じユーザアカウントを複数名で共有すると意味を成さない
• ユーザ毎に個別のアカウントを使用する
• Adminユーザは複数作っておいたほうが安心
• ロック状態は、アクティブ化(暗黙解放)もしくは明示
的に解放しなければ継続する
• コンソールログアウトやサーバ再起動でもロックは解放され
ない
• コンソールのプリファレンス設定で、チェンジセンターのロ
ックに関する設定を行う
Copyright© 2012, Oracle. All rights reserved.
24
チェンジセンターのプリファレンス
ロックを保持したままログア
ウトしようとすると …
別のユーザがロック中にロックを
取得しようとすると …
Copyright© 2012, Oracle. All rights reserved.
25
その他の管理ツール
• コマンドラインツール
• WLST … 管理コンソール, コンフィグレーションウィザードの
機能を併せ持つコマンドラインツール。 Jythonベース
• weblogic.Deployer … アプリケーションデプロイメントツー
ル
• weblogic.Admin (非推奨)
Copyright© 2012, Oracle. All rights reserved.
26
Agenda
•
•
•
•
WebLogic ServerとJava EE
ドメインのポイント
デプロイメントのポイント
データソースのポイント
Copyright© 2012, Oracle. All rights reserved.
27
デプロイメントとは?
• アプリケーションをWebLogic ドメインに登録し対象
指定されたサーバでアクティブにすること
• デプロイメントフェーズは2段階ある
• インストール (準備完了状態)
• アプリケーションをドメインに登録
• アプリケーションのデプロイ対象指定(サーバ、クラスタ)
• アクティベーション (アクティブ状態)
• デプロイ対象でアプリケーションを起動
• = クライアントからのアクセス可能な状態
Copyright© 2012, Oracle. All rights reserved.
28
コンソールデプロイメント
①ロック取得
②[インストール]開始
アプリケーション・インストール・
アシスタントが開始される
Copyright© 2012, Oracle. All rights reserved.
29
アプリケーション・イントール・アシスタント
- オプション設定画面
アプリケーションのステージング設定
(= デプロイ対象サーバへのアプリケ
ーション・ファイルのコピー)
stage: 管理サーバからデプロイ対象の
サーバにファイルコピー (デプロイメ
ントプロセスの一環として実行)
nostage: デプロイ対象のサーバにファ
イルをコピーしない (共有フォルダに
アプリケーション・ソースファイル
を配置する etc)
* 各サーバのステージング設定は、[サー
バ]→[構成]-[デプロイメント]で指定可能
Copyright© 2012, Oracle. All rights reserved.
30
アプリケーションの起動
起動はコンフィグレーション
ロック不要
状態が「アクティブ」
であることを確認
Copyright© 2012, Oracle. All rights reserved.
31
デプロイメントのポイント
• コンソールデプロイ時は必ず2段階デプロイメント
• インストール後の起動を忘れないように
• アンデプロイ時は停止→削除
• デプロイメントの細かい制御はコマンドラインデプロイメン
トの方が自由度が高い
• アプリケーション・ソースファイルは、必ず管理サ
ーバがアクセス可能なファイルシステムに配置する
必要がある
• デプロイ対象が管理対象サーバの場合は、ステージ
ング設定も考慮する (stage/nostage)
Copyright© 2012, Oracle. All rights reserved.
32
コマンドラインデプロイメント
コマンドラインデプロイメントはWLSまた
はweblogic.Deployerで実行可能
* コマンドは管理サーバに対して実行
①
WLST
④
weblogic.Deployer
① distributeApplication() -distribute
⑤
⑥
準備完了
②
③
アクティブ
⑦
② startApplication()
-start
③ stopApplication()
-stop
④ undeploy()
-undeploy
⑤ deploy()
-deploy
⑥ undeploy()
-undeploy
⑦ redeploy()
-redeploy
Copyright© 2012, Oracle. All rights reserved.
33
Agenda
•
•
•
•
WebLogic ServerとJava EE
ドメインのポイント
デプロイメントのポイント
データソースのポイント
Copyright© 2012, Oracle. All rights reserved.
34
JDBCデータソース
• Java EEにおけるデータベースアクセス
WebLogic Server
JNDI
デプロイ時にバインド
データソース
JNDIルックアップ
DataSource ds;
デプロイ時に
接続オブジェクト取得
try (Connection conn = ds.getConnection();
PreparedStatement pstmt = conn.prepareStatement(QUERY)) {
pstmt.setString(1, "xxx");
ResultSet rs = pstmt.executeQuery();
while(rs.next()) {
// ....
初期容量まで接続
接続プール
@Resource(name = "jdbc/test")
RDBMS
}
} catch (SQLException e) {
// 例外処理
}
開発者
Copyright© 2012, Oracle. All rights reserved.
運用担当者
35
データソース作成の前の確認事項
• JDBCドライバ
• JDBCドライバクラス名
• JDBC URL書式
• DB接続情報
• ホスト名/ポート番号
• ユーザ名/パスワード
• 最大接続数
Copyright© 2012, Oracle. All rights reserved.
36
データソースの作成
JNDI名は複数バインド可能
WebLogic JNDIの区切り文字は
「.」もしくは「/」
Copyright© 2012, Oracle. All rights reserved.
37
データソースの設定
• 容量=接続プール内の物理接続(DB接続)数
• 初期容量 = 接続プール作成時の物理接続数。初期容
量分作成できないとデプロイ失敗
• 最大容量 = 接続プールの最大物理接続数
• 最小容量 = 縮小時の最小物理接続数
* 原則として『初期容量=最大容量』と考えて良い
が、容量設定が大きい場合は、初期容量 < 最大容量
とすることもあり。この場合、縮小も考慮に入れる
ので必要に応じて最小容量も設定
増加した容量を縮小するまでの秒数。
0で無効化。
Copyright© 2012, Oracle. All rights reserved.
38
データソースのモニタ
• データソースの[監視]タブのテーブルに行が表示され
ていればデータソースはデプロイ済み
• 表のカスタマイズを選択して必要な情報を追加する
• 「○○現在数」はモニタ時点のスナップショット
• 「最大○○」は最大負荷情報を取得可能
• サーバにデプロイされたコンポーネントからアクセスできる
かどうかは各サーバのJNDIツリーを確認
Copyright© 2012, Oracle. All rights reserved.
39
JNDIツリーの確認
Copyright© 2012, Oracle. All rights reserved.
40
データソースのポイント
• データソースはサーバ起動時にデプロイされる
• デプロイに失敗してもサーバは起動する
• 接続プールのモニタでデプロイ済みかどうかを確認
• データソースのJNDI名をルックアップできないとアプリケー
ションはデータソースを利用できない
• JNDIツリーの確認も忘れずに
• アプリケーション処理スレッドが接続待ちにならな
いような設定が理想的
• DB物理接続数は、接続プールの「容量」で管理
• 初期容量、最大容量、(+最小容量) を適切に設定する
Copyright© 2012, Oracle. All rights reserved.
41
まとめ
• WebLogic Serverの運用管理を行うための第一歩
• WebLogic Serverの管理概念を理解する
• ドメイン、マシン、サーバ、クラスタ …
• アプリケーションの動作に必要となるリソースの設定方法を
理解する
• データソース、セキュリティ、トランザクション、JMS …
• アプリケーションのデプロイメント
Copyright© 2012, Oracle. All rights reserved.
42
Copyright© 2012, Oracle. All rights reserved.
Copyright© 2012, Oracle. All rights reserved.
44
<Insert Picture Here>
WebLogic Server トランザクションの基本
日本オラクル株式会社
2012年8月8日
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するもので
す。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み
込むことはできません。以下の事項は、マテリアルやコード、機能を提供す
ることをコミットメント(確約)するものではないため、購買決定を行う際
の判断材料になさらないで下さい。オラクル製品に関して記載されている機
能の開発、リリースおよび時期については、弊社の裁量により決定されます
。
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。
Copyright© 2012, Oracle. All rights reserved.
2
Agenda
• 分散トランザクションとは?
• Java Transaction API
• 分散トランザクションとは?
• WebLogic Serverのトランザクション設定
• ドランザクションの設定
• モニタリング
• リソースの設定
Copyright© 2012, Oracle. All rights reserved.
3
トランザクションとは?
• データストアに対して”all or nothing”手法で永続化を
行う処理
• 分散環境においてデータの整合性を保つためには必須
• ACID特性を満たす
• Atomicity(原子性) – 処理は成功か失敗のいずれか
• Consistency(一貫性) – 処理前後ではデータの一貫性が保たれ
る
• Isolation(独立性) – 同時に実行される複数の処理は互いに干
渉しない
• Durability(永続性) – 確定したトランザクションの結果は確実
に永続化される
Copyright© 2012, Oracle. All rights reserved.
4
Java EEにおけるトランザクション仕様
• JTA(Java Transaction API)
• X/Open DTPモデルをベースにした分散トランザクションAPI
トランザクションマネージャとトランザクション参加者であ
るアプリケーション、リソースマネージャが使用する標準イ
ンタフェースを提供
• javax.transaction.* - トランザクションマネージャとトラン
ザクション参加者との規約
• javax.transaction.xa.* - トランザクションマネージャ(TM)
とリソースマネージャ(RM)間の規約
• JTS (Java Transaction Service)
• JTAをサポートするトランザクションマネージャ実装を提供
OMG Object Transaction Service(OTS) 1.1 仕様に対応したJava
実装のサービス
Copyright© 2012, Oracle. All rights reserved.
5
X/Open DTPモデル
Application Program
(AP)
APはRMを介
してリソース
を使用
APはトラン
ザクション境
界を指定
XA
Resource Manager
Resource Manager
(RM)
Resource Manager
(RM)
(RM)
Transaction Manager
(TM)
TMとRMをトランザクション情報を交換
Copyright© 2012, Oracle. All rights reserved.
6
トランザクションマネージャとリソース
マネージャ
• トランザクションマネージャ(TM)
• アプリケーションに代わってグローバルトランザクションの
管理を行うサーバソフトウェアコンポーネント
• アプリケーションからのグローバルトランザクションの開始/
終了要求に基づいて、そのトランザクションに関与する全て
のリソースマネージャと通信してトランザクションを制御
• 2フェーズコミット(2PC)を制御
• WebLogic Serverではインスタンスごとにトランザクション
マネージャが存在する
• リソースマネージャ(RM)
• データやプロセスへのアクセスを提供するインタフェースお
よび関連ソフトウェアであり、トランザクション処理機能と
アクセスの永続化機構を有する
Copyright© 2012, Oracle. All rights reserved.
7
ローカルトランザクションとグローバル
トランザクション
• ローカルトランザクション
• トランザクションマネージャが介在しないトランザクション
• リソースマネージャが直接トランザクションを制御する
• 非XAドライバを使ったDB接続
• 非XAのJMS接続ファクトリを使用したJMSメッセージング
• グローバルトランザクション(分散トランザクション)
• トランザクションマネージャが介在するトランザクション
• TMがJMSやXA DataSourceなどトランザクションに関与する
複数のRMを調整して、トランザクションの制御を行う
• 1TXでDB, JMSにアクセスする
• 1TXで2つ以上のDBにアクセスする
• TXがEJBコンテナによって開始された場合(EJBコンテナは
サーバ上のTMを利用)
Copyright© 2012, Oracle. All rights reserved.
8
2フェーズコミット (2PC)
• 2PCプロトコルは複数のRMをまたぐ単一トランザク
ションを調整する方法
• PrepareフェーズとCommitフェーズと呼ばれる2つのフェー
ズを用いてトランザクション特性を満たす
• トランザクションのコミット処理
(UserTransaction.commt()/TransactionManager.commit())
により2PCが開始される
• コーディネータはグローバルトランザクションを操作し、
サブコーディネータは自身のサーバに関連したトランザク
ション・ブランチを操作する
Copyright© 2012, Oracle. All rights reserved.
9
WebLogic Serverの2PCプロセス
• WebLogic Serverでは2PCを3つのステップで処理
• Pre-Prepareフェーズ
• トランザクションが完了する前後でアプリケーションがコ
ールバックを受け取れるようにするためにコールバックオ
ブジェクト(javax.transaction.Synchronization)をトランザ
クションマネージャに登録する
• Prepareフェーズ(フェーズ1)
• グローバルトランザクションに参加しているリソースがト
ランザクションブランチを処理する準備を行う
• Commitフェーズ(フェーズ2)
• グローバルトランザクションに参加しているリソースが実
際にトランザクションブランチを処理する
Copyright© 2012, Oracle. All rights reserved.
10
2PC 処理の流れ
フェーズ1 (prepare)
prepare
リソース
マネージャ1
トランザクション
マネージャ
リソース
マネージャ2
データベース2
prepared
commit
アプリケーション
データベース1
TLOG
commit
リソース
マネージャ1
トランザクション
マネージャ
リソース
マネージャ2
フェーズ2 (commit)
データベース1
データベース2
committed
Copyright© 2012, Oracle. All rights reserved.
11
Agenda
• 分散トランザクションとは?
• Java Transaction API
• 分散トランザクションとは?
• WebLogic Serverのトランザクション設定
• ドランザクションの設定
• モニタリング
• リソースの設定
Copyright© 2012, Oracle. All rights reserved.
12
トランザクションの設定
• トランザクションサービスはWebLogic Server起動時
に開始される
• トランザクションの設定
• ドメイン・レベルで設定を行う
• ドメインで同じトランザクション設定を使用
• トランザクションのモニタリング
• サーバ・レベルでモニタリングを行う
• 管理コンソール, WLST …
• 参加リソース(JDBCデータソースなど)の設定
• リソース・レベルで設定を行う
Copyright© 2012, Oracle. All rights reserved.
13
トランザクション設定
トランザクション開始からフェーズ1完
了までの持続時間。この時間を超える
とTXはタイムアウトし、ロールバック
される
TMが新しいトランザクションログを作
成し、古いトランザクションログを破
棄するかどうかを確認する間隔
[10.3.3.0~]トランザクションのフェ
ーズ2のタイムアウト時間。デフォ
ルト(0)はtransaction-timeout x 2(秒)
Copyright© 2012, Oracle. All rights reserved.
14
トランザクションログ
• 未完了のトランザクション情報を格納するログ
• トランザクションログはバイナリ形式のため、直接見ること
はできない
• トランザクションログはサーバのデフォルト永続ストアに格
納される
• デフォルト永続ストア
$DOMAIN/servers/<Server_Name>/data/store/default/_WLS_ <Server_Name>000000.DAT
• WLS12cではJDBCストアを使用可能(後述)
• サーバごとに設定変更可能
Copyright© 2012, Oracle. All rights reserved.
15
トランザクションログのダンプ
• $ 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 |
| ull,re-Registered = false),SCInfo[12c_domain+AdminServer]=(state=active))
|
+------------------------------------------------------------------------------------------------------------ +
Copyright© 2012, Oracle. All rights reserved.
16
JDBC TLOG ストア (WebLogic Server 12c)
• TLogをデータベースに永続化可能
• TLog用高信頼性ストレージの代替
• 障害復旧の容易性の向上 (アプリケーションデータ, JMS,
TLOGをDBに一括格納可能)
デフォルト・ストア もしくは JDBC
データソースを指定する
- グローバルトランザクション非サポート(非XA)
のデータソースを指定
- ストア先のDBにアクセス出来ないと起動に失敗
する
Copyright© 2012, Oracle. All rights reserved.
17
トランザクションのモニタ
• トランザクションのモニタはサーバ・レベルで行う
• トランザクション統計
(JTARuntimeMBean/JTATransactionStatisticsRuntimeMBean)
• トランザクションログストア統計(TransacitonLogStoreRuntimeMBean)
• リソースごとのトランザクション統計
• XA (TransactionResourceRuntimeMBean)
• 非XAリソース (NonXAResourceRuntimeMBean)
• 回復サービス(RecoveryRuntimeMBean)
• 現在のトランザクション (JTARuntimeMBeanのJTATransactions属性)
Copyright© 2012, Oracle. All rights reserved.
18
トランザクションモニタ
Copyright© 2012, Oracle. All rights reserved.
19
実行中のトランザクション
Copyright© 2012, Oracle. All rights reserved.
20
トランザクションの手動解決
• 実行中のトランザクションは手動解決可能
• 障害対応用として使用
• ローカルオプションとグローバルオプション
• ローカル: 該当のサーバリソースにのみ影響
• グローバル: グローバルトランザクションに参加する全サーバに影響
• トランザクションのステータスによって行える処理が異なる
ステータス
強制コミット
強制ロールバック
ステータス
アクティブ
○
ロールバック中
○
準備中
○
ロールバック完
了
○
○
マーク済ロール
バック
○
準備完了
○
コミット中
○
トランザクショ
ンなし
コミット完了
○
不明
強制コミット
Copyright© 2012, Oracle. All rights reserved.
○
強制ロールバック
○
21
ヒューリスティックな終了
• 2PC処理中にRMによる一方的な決定(commit/rollback)が
行われた状態
• インダウト中のTM障害や、トランザクション破棄、トランザ
クションの手動解決などにより発生
• ヒューリスティックな終了の状態によってスローされる例外
が異なる
ヒューリスティックな決定 説明
HeuristicRollback
RMがRollbackしてしまった。TMが他のTXブランチをコミッ
トすると不整合発生
HeuristicCommit
RMがCommitしてしまった。TMが他のTXブランチを
Rollbackすると不整合発生
HeuristicMixed
複数のリソースでHeuristicRollbackとHeuristicCommitが発生
していることをTMが認識している状態
HeuristicHazard
HeuristicMixedが発生しているが、TMがRMのステータスを
識別できていない状態
Copyright© 2012, Oracle. All rights reserved.
22
障害時の復旧
- TRS(トランザクション回復サービス)
• WebLogic ServerのTMではトランザクション回復サー
ビスを提供
• サーバ起動時に自動的に実行
• TLogを解析して未完了のトランザクションの解決を行う
• 2PC処理を完了させる(フェーズ1, フェーズ2)
• ヒューリスティックな終了をログに記録
• サーバに障害が発生した場合の対応
TLogにアクセスできる状態でサーバを起動する
• ハードウェア障害に対応するにはTLogの複製が必須
• 高性能Disk or JDBCストア(WLS12c)
• クラスタ構成の場合はサービス移行orサーバ移行可能
Copyright© 2012, Oracle. All rights reserved.
23
JTA トランザクション処理
Application
Application Transaction
Server
Manager
Resource
Factory
Transactional
Resource
Connection
XAResource
begin
getConnection
getTransactionalResource
new
new
new
getXAResource
enlistResource
start
doWork
commit
commit
prepare
commit
Copyright© 2012, Oracle. All rights reserved.
24
トランザクションに参加可能なリソース
リソース
トランザクション
開始者
トランザクション
参加者
XAResource
Java Client
○
CORBA Client
○
RMI Object
○
EJB (BMT)
○
EJB (CMT)
○
○
JDBC
○
○
○
JMS
○
○
○
J2EE Connector
○
○
○
JSP
○
Servlet
○
○
○
外部リソース
○ (if hosted on WLS)
Copyright© 2012, Oracle. All rights reserved.
25
EJB(CMT)のトランザクション管理
• EJB(CMT)ではEJBコンテナがトランザクション境界を
設定
• トランザクション属性で制御可能(@TransactionAttribute)
• 指定可能なトランザクション属性
• コンテナ – コンポーネント間のトランザクション
TransactionAttribute
クライアント(TXなし) クライアント(TXあり)
NEVER
△
× 例外発生
NOT SUPPORTED
△
△ クライアントTXはSuspend
SUPPORTS
△
○
MANDATORY
× 例外発生
○
REQUIRED
○
○
REQUIRES NEW
○
○クライアントTXはSuspend
×: 呼び出し不可 △:トランザクションなし ○:トランザクションあり
Copyright© 2012, Oracle. All rights reserved.
26
JDBCデータソースのトランザクション対
応
• 分散トランザクションに参加する場合は原則として
データソース作成時にXA対応ドライバを使用する
• 非XAドライバを使用する場合はグローバルトランザ
クションのサポートを選択
※非XAドライバでグローバルトラ
ンザクションを使用する場合は、
Connectionの取得前にトランザク
ションを開始する
Copyright© 2012, Oracle. All rights reserved.
27
Logging Last Resource(LLR)
• トランザクションの整合性を保ちつつ2PCトランザク
ションの最適化を実現
• 2PCに参加するリソースのXA処理のオーバーヘッドを低減
• +「2PCのエミュレート」よりも高い整合性
• LLRの注意点
• LLR用のデータソースは非XAドライバを使用
• LLR表は自動生成される(表名の接頭辞は指定可能)
• LLR表を格納するDBはWLSよりも先に起動しておく
• LLR表を格納するDBにアクセス出来ないと起動に失敗する
• LLR使用時もTLogは必要
Copyright© 2012, Oracle. All rights reserved.
28
LLR処理
2PC:prepare
5
2
2PC:commit
XA Data
Source
1
4
Commit
WebLogic
Server
(TM)
Application
コミットレコード
挿入
非XAリソース コミット
(ローカルTX)
Non-XA Data
Source
JMS XA
Connection
3
LLR Table
2
Copyright© 2012, Oracle. All rights reserved.
5
29
ドメイン間トランザクションの設定
• ドメイン間に渡るグローバルトランザクションを実
行するにはドメインのセキュリティ設定を追加する
• ドメイン間でのセキュリティコンテキストの伝播のため
• クロスドメインセキュリティを設定
• ドメイン間の信頼(セキュリティ相互運用モード)
• 考慮事項
• ドメイン間で同じセキュリティ設定を使う
• ドメイン間トランザクションを参加するリソース名は一意である必要が
ある
Copyright© 2012, Oracle. All rights reserved.
30
まとめ
• WebLogic Serverのトランザクションはドメイン単位
で設定する
• 2PCトランザクション処理がある場合は、考慮事項が増える
• TXタイムアウト, TLOGストア, 障害回復, …
• モニタリングはサーバ単位で行う
• プログラミングモデルは原則としてJava EE準拠
• リソース毎に必要なトランザクション設定を行う
Copyright© 2012, Oracle. All rights reserved.
31
Copyright© 2012, Oracle. All rights reserved.
Copyright© 2012, Oracle. All rights reserved.
33