Cosminexus システム構築ガイド

[目次][用語][索引][前へ][次へ]

付録C.2 インプロセストランザクションサービスへの移行

トランザクションサービスをJ2EEサーバとは別のプロセス(アウトプロセス)で起動していた場合,07-00以降からはJ2EEサーバ起動時にインプロセスで起動するように変更してください。

ここでは,ファイル編集とコマンド実行でシステムを構築する場合の設定の変更方法について説明します。Management Serverの運用管理ポータルでシステムを構築する場合の設定の変更方法については,「付録A.10(4) トランザクションサービスのインプロセス化」を参照してください。

<この項の構成>
(1) 移行作業の流れ
(2) 運用の移行
(3) トラブルシュート情報の取得方法の移行
(4) プログラムソースコードの移行

(1) 移行作業の流れ

次の手順に従って,環境を移行してください。

  1. アウトプロセストランザクションサービスのアンセットアップ
  2. プロパティの設定
  3. 環境変数の変更
(a) アウトプロセストランザクションサービスのアンセットアップ

アウトプロセストランザクションサービスのセットアップ用のコマンドを実行して,アウトプロセストランザクションサービスをアンセットアップしてください。

アウトプロセストランザクションサービスのセットアップ用のコマンドを実行するタイミングによって,使用するコマンドが異なります。

(b) プロパティの設定

インプロセストランザクションサービスでは,セットアップコマンドの実行は必要ありません。また,アウトプロセストランザクションサービスではtsdefvalueコマンドを使用してシステム環境定義をカスタマイズしましたが,インプロセストランザクションサービスではJ2EEサーバ用のユーザプロパティファイルを使用してシステム環境定義をカスタマイズします。インプロセストランザクションサービスで設定が必要なJ2EEサーバのプロパティを次の表に示します。

表C-1 インプロセストランザクションサービスで設定が必要なJ2EEサーバのプロパティ

キー名称 見積もりの指針
ejbserver.distributedtx.enableXidReuseOptimization false
ejbserver.distributedtx.ots.status.directory1 インプロセストランザクションサービスのステータスファイルを格納するディレクトリ 指定したパスのパーティションが枯渇しないように運用する必要があります。
また,アウトプロセストランザクションサービスでは,環境変数「TPFS」をカスタマイズして共有ディスク上に配置し,HA構成で運用していた場合は,共有ディスク上のパスを設定する必要があります。
ejbserver.distributedtx.ots.status.directory2

注※ インプロセストランザクションサービスでステータスファイルを1面で運用する場合,設定の必要はありません。


キーの詳細については,マニュアル「Cosminexus リファレンス 定義編」を参照してください。

(c) 環境変数の変更

インプロセストランザクションサービスとアウトプロセストランザクションサービスでは,設定が必要な環境変数が異なります。不要となった環境変数は削除してください。トランザクションサービスの環境変数の設定要否を次の表に示します。なお,環境変数に設定する値については,「2.3.2 環境変数の詳細」を参照してください。

表C-2 トランザクションサービスの環境変数の設定要否

環境変数名 指定する内容 設定の要否
アウトプロセストランザクションサービスの場合 インプロセストランザクションサービスの場合
OSAGENT_PORT スマートエージェントが使用するポート番号  ※1
PATH プログラム実行パス
LIBPATH,またはLD_LIBRARY_PATH※2 ライブラリ検索パス
TPDIR Cosminexus TPBrokerのインストール先
TZ タイムゾーン
VBROKER_ADM スマートエージェントの定義情報が格納されているディレクトリ
TPFS Cosminexus TPBrokerのステータスファイル格納先
(任意のディレクトリまたはキャラクタデバイスファイル)
TPSPOOL Cosminexus TPBrokerの稼働情報格納先
(任意のディレクトリ)

(凡例)
◎:設定する必要がある。
○:使用する機能によっては設定する必要がある。
△:設定は不要(設定しても無視される)。

注※1 CTMなどの機能でスマートエージェントを使用する場合があります。ほかの機能で使用している場合は,環境変数「OSAGENT_PORT」を削除しないでください。

注※2 OSによって,使用する環境変数名が異なります。


(2) 運用の移行

システムの運用環境も移行する必要があります。次の内容を変更して,システムの運用環境を移行してください。

  1. 起動プロセスの変更
  2. メッセージの監視方法の変更
(a) 起動プロセスの変更

インプロセストランザクションサービスでは,次のプロセスは起動不要です。

(b) メッセージの監視方法の変更

メッセージを監視する運用を行っている場合,メッセージの出力や内容の変更があります。監視対象となるメッセージIDを変更してください。メッセージの変更点を次の表に示します。

表C-3 メッセージの変更点

変更点 アウトプロセストランザクションサービスの場合 インプロセストランザクションサービスの場合
出力先 イベントログ,またはsyslog cjmessage?.log
cjmessage?.log
メッセージIDの範囲 KFCB29500〜KFCB32401 KFCB40000〜KFCB49999
メッセージが記載されているドキュメント TPBrokerのドキュメント マニュアル「Cosminexus メッセージ 2 KEOS/KEUC/KFCB編」

注 「?」は通番を意味します。


(3) トラブルシュート情報の取得方法の移行

アウトプロセストランザクションサービスを使用した場合は,環境変数「TPSPOOL」および「TPFS」に指定したディレクトリ以下のトレースファイルやログファイルを取得する必要がありました。インプロセストランザクションサービスでは,アウトプロセストランザクションサービスで取得していた資料は,取得不要です。インプロセストランザクションサービスで取得する必要があるトラブルシュート情報を次の表に示します。

表C-4 インプロセストランザクションサービスで取得する必要があるトラブルシュート情報

取得先 取得情報
Cosminexus Component Containerのメッセージログ
  • Windowsの場合
    <作業ディレクトリ>\ejb\<サーバ名称>\logs\cjmessage?.log
  • UNIXの場合
    <作業ディレクトリ>/ejb/<サーバ名称>/logs/cjmessage?.log)
Cosminexus TPBrokerのメッセージ
Cosminexus Component Containerのユーザログ
  • Windowsの場合
    <作業ディレクトリ>\ejb\<サーバ名称>\logs\user_out?.log
  • UNIXの場合
    <作業ディレクトリ>/ejb/<サーバ名称>/logs/user_out?.log)
Cosminexus TPBrokerのメッセージ
Cosminexus Component Containerのメンテナンスログ
  • Windowsの場合
    <作業ディレクトリ>\ejb\<サーバ名称>\logs\cjmeintenance?.log
  • UNIXの場合
    <作業ディレクトリ>/ejb/<サーバ名称>/logs/cjmeintenance?.log)
Cosminexus TPBrokerのトレース情報
インプロセストランザクションサービスのステータスファイル
(J2EEサーバのejbserver.distributedtx.ots.status.directory1,またはejbserver.distributedtx.ots.status.directory2キーで指定されるディレクトリ以下のファイル)
インプロセストランザクションサービスのステータスファイルおよびステータスファイルのバックアップ

注 「?」は通番を意味します。


(4) プログラムソースコードの移行

次に示すように運用手順を変更して移行してください。

インプロセストランザクションサービスを使用する場合,アウトプロセストランザクションサービスを使用していた場合と比べて,動作が異なります。発生条件に合致する場合,プログラムソースコードを変更する必要があります。

表C-5 プログラムソースコードの変更点

動作変更内容 発生条件 修正内容
SetRollbackOnly後のトランザクション決着時にbeforeCompletionが呼ばれません(アウトプロセストランザクションサービスを使用した場合は呼ばれます)。 Stateful Session Beanを使用し,SessionSynchronizationを実装している場合 SetRollbackOnly後のトランザクション決着時にbeforeCompletionが呼ばれることを期待しないプログラムに変更してください。
SetRollbackOnly後のトランザクション決着時にejbStoreが呼ばれません(アウトプロセストランザクションサービスを使用した場合は呼ばれます)。 Entity Beanを使用している場合 SetRollbackOnly後のトランザクション決着時にejbStoreが呼ばれることを期待しないプログラムに変更してください。
afterCompletionの引数(boolean commited)の決定方法は,アウトプロセストランザクションサービスの場合にはトップルートトランザクションの処理結果を反映していましたが,インプロセストランザクションサービスの場合には,該当するブランチと,サブオーディネートブランチの処理結果だけで決定されます。 次の条件をすべて満たす場合
  • 複数のJ2EEサーバで,プロセス間をわたってトランザクショナルなEJB呼び出しを行う。
  • Stateful Session Beanを使用している。
  • SessionSynchronizationを実装している。
afterCompletionの引数の使い方として,トップルートトランザクションの決着結果を期待しないプログラムに変更してください。