前へ     目次     索引     DocHome     次へ     
iPlanet Application Server 管理者ガイド



第 9 章   トランザクションの管理


この章では、iPlanet Application Server Administration Tool (iASAT) を使ったトランザクション管理に必要な作業と概念について説明します。

この章には次のトピックがあります。



トランザクションマネージャについて

The トランザクションマネージャは、iPlanet Application Server の各インスタンスとともにインストールされ、Java サーバ (KJS) プロセス内のグローバルトランザクションを調整します。グローバルトランザクションは、関連処理の集合で、単位として実行する必要があります。ただし、各処理は同一プロセス内で実行する必要はありません。

グローバルトランザクションでは、が同一グローバルトランザクションに対して、1 つまたは複数の EJB (Enterprise Java Beans) を使用している場合でも、1 つまたは複数の KJS プロセスからデータベースを更新することができます。この現象は、EJB が別の EJB をトリガし、これらの EJB が同じトランザクションを使用している場合に発生します。さまざまな場所に分散されている複数のデータベースを更新したり、さまざまなタイプ (Oracle や Sybase など) の複数のデータベースを更新したりできます。トランザクションマネージャは、KJS プロセス内で動作します。


新しい機能

iPlanet Application Server Enterprise Edition 6.5 リリース以降では、バンドルされているトランザクションマネージャは、運用環境向けに変更が加えられた Java Transaction Service Reference Implementation (JTS RI) に基づいています。

ローカルトランザクションを使用するアプリケーションを最適化するためにローカルトランザクションマネージャも追加されています。

データソースマネージャの機能が拡張されており、XADataSource、PooledDataSource、および DriverManager をサポートします。XA コネクションとプールされたコネクションのプーリングをサポートするための新しいコネクションプーリングインフラストラクチャが実装されています。

トランザクションマネージャに追加された新しい機能は次のとおりです。

  • グローバルトランザクションとローカルトランザクションを同時に実行できる柔軟性

  • 次の 3 つのレベルでトランザクションタイプを指定できるユーザに対するプロビジョン

    • インスタンス全体

    • パッケージレベル (J2EE-Module/パッケージ名にある)

    • コンポーネントレベル

    iPlanet Application Server は、まず、パッケージ名の下を参照し、次にコンポーネント <classdef¥<guid>、最後にレジストリ内の <CCSO¥TXNMGR> にあるインスタンス全体の値を参照することによって特定のコンポーネントまたはアプリケーションのトランザクションタイプを決定します。



    ヒント

    コンポーネントレベルでトランザクションタイプを指定すると、パフォーマンスを向上させることができます。



  • リカバリのサポート

    iPlanet Application Server が起動すると、レジストリに登録されているデータソースが使用するすべてのデータベースから保留中のトランザクションを検索し、リカバリを実行します。リカバリ機能を無効にすることもできます。

新しいトランザクションマネージャでは、管理制御、監視、および追跡の機能が改善されています。iPlanet Application Server Administration Tool は、管理および監視の機能をサポートするために大幅に拡張されています。



iASAT からの分散トランザクションの管理



iPlanet Application Server Administration Tool の「トランザクション」メニューオプションを使ってトランザクションを管理できます。

この節では次のトピックについて説明します。


「トランザクション」ウィンドウについて

「トランザクション」ウィンドウの左側のペインには、次の図のようなノードツリーが表示されます。

図 9-1    トランザクションマネージャの「設定」タブ


ツリーの最上位レベルには、iASAT に登録されているサーバが一覧表示されます。2 番目のレベル、つまり各登録済みサーバ名の下には、1 つまたは複数のプロセスノードが表示されます。ノードには、登録済みサーバ上で実行されているプロセスが表示されます。トランザクションは KJS プロセスだけでサポートされるため、ツリーには KJS プロセスだけが表示されます。

KJS プロセスは、ポート番号 (10819 など)、および JMS リスナへの接続に使用する ORB ポート (10920 など) とともに表示されます。


サーバごとにトランザクションを設定する

iPlanet Application Server インスタンスを選択してメニューバーの「トランザクション」をクリックすると、そのサーバインスタンスのグローバルプロパティが表示されます。すべての KJS インスタンスは、エンジン ID やポート番号などの識別情報以外は iPlanet Application Server のプロパティを共用します。したがって、この「設定」ダイアログボックスで変更を行うと、そのサーバ上で動作するすべてのトランザクションに影響します。

アプリケーションサーバのトランザクション設定を変更するには、「トランザクション」ウィンドウの左側のペインで登録済みサーバをクリックします。次のような「設定」タブが右側のペインに表示されます。

図 9-2    サーバインスタンスのトランザクションプロパティの表示


設定できるオプションは次のとおりです。

  • トランザクションタイプ

    トランザクションタイプをローカルまたはグローバルに設定できます。

    グローバルトランザクションを有効にすると、複数の異なるデータベースとプロセスにわたってトランザクションを分散できます。

  • タイムアウト

    規定された時間内にトランザクションが完了されなかった場合にロールバックするまでの時間 (秒単位) を設定します。これは、トランザクションプロセス (たとえばステートフルセッションビーンなど) が開始されたが、アプリケーション設計にバグがあったために完了できなかった場合に役立ちます。

  • 待機間隔

    「待機間隔」には、iPlanet Application Server が動かなくなったトランザクションや破壊したトランザクションをクリアするまでに待機する時間 (秒単位) を指定します。

  • ログディレクトリ

    トランザクションマネージャのログファイルを保存する場所を示すパスを指定します。デフォルトは iASInstallDir/ias/logs/jts です。


サーバごとにトランザクションを表示する

トランザクションの詳細を表示するには、「トランザクションマネージャ」タブをクリックします。「トランザクションマネージャ」ダイアログボックスに、進行中の各種トランザクションの状態に関する詳細情報が表示されます。



詳細表示の項目は次のとおりです。

  • プロセス

    「プロセス」タブには、トランザクションが属する KJS エンジンが表示されます。

  • トランザクション ID

    トランザクション ID は、コネクションプールマネージャによってトランザクションに割り当てられます。

  • 状態

    「prepared」、「running」、「rollbacked」、「committing」の 4 つの状態が表示されます。

  • タイプ

    トランザクションがローカルかグローバルかを示します。

  • 作成者

    「作成者」は、トランザクションを生成した Servlet または Bean を示します。

  • 経過時間

    トランザクションが開始されてからの時間を示します。



    ヒント

    表の見出しをクリックすると、そのデータをソートできます。




サーバごとにトランザクションを管理する

一度に複数のエントリを選択してアクティブなトランザクションを制御できます。進行中のトランザクションを制御するためのオプションは、ダイアログボックスのいちばん下にあります。

  • ロールバックのマーク

    「ロールバックのマーク」オプションを使うと、アクティブなトランザクションをロールバックできます。目的のトランザクションを選択し、「ロールバックのマーク」をクリックします。

    Shift キーを押しながらトランザクションを選択し、「ロールバックのマーク」をクリックすることにより、複数のトランザクションを一度にロールバックすることもできます。



    トランザクションをロールバックするときに、「トランザクションが存在しません」というメッセージが表示されることがあります。これは、コマンドが実行される前にそのトランザクションが完了してしまうことがあるためです。



  • 更新

    「更新」ボタンを定期的にクリックして、期限切れのトランザクションをビューから削除し、現在実行されているトランザクションをウィンドウに表示してください。


プロセスごとにトランザクションを管理する

目的の iPlanet Application Server インスタンスの下で稼動している特定の KJS エンジンに接続されているトランザクションプロセスを個別に管理できます。このオプションを使うと、iPlanet Application Server で稼動するトランザクションを細かく制御できます。


選択したプロセス上のトランザクションを表示する

特定の KJS エンジンに関するトランザクションの状態を表示するには、左側のペインで目的のエンジンを選択します。そのエンジンで動作するトランザクションが右側のペインに表示されます。

図 9-3    特定の KJS エンジンのトランザクションプロパティの表示


詳細表示の項目は次のとおりです。

  • トランザクション ID

    トランザクション ID は、コネクションプールマネージャによってトランザクションに割り当てられます。

  • 状態

    「prepared」、「running」、「rollbacked」、「committing」の 4 つの状態が表示されます。

  • タイプ

    トランザクションがローカルかグローバルかを示します。

  • 作成者

    「作成者」は、トランザクションを生成した Servlet または Bean を示します。

  • 経過時間

    トランザクションが開始されてからの時間を示します。



    ヒント

    表の見出しをクリックすると、そのデータをソートできます。




プロセスごとにトランザクションを管理する

左側のペインでアプリケーションサーバインスタンスを選択し、メニューバーの「トランザクション」アイコンをクリックします。図 9-3 のようなダイアログボックスが表示されます。

一度に複数のエントリを選択してアクティブなトランザクションを制御できます。進行中のトランザクションを制御するためのオプションは、ダイアログボックスのいちばん下にあります。

  • ロールバックのマーク

    「ロールバックのマーク」オプションを使うと、アクティブなトランザクションがロールバックできます。目的のトランザクションを選択し、「ロールバックのマーク」をクリックします。

    複数のトランザクションを選択して「ロールバックのマーク」をクリックすることにより、複数のトランザクションを一度にロールバックすることもできます。

  • トランザクションを凍結

    「トランザクションを凍結」オプションを使うと、すべてのアクティブトランザクションが一時的に停止します。すべてのトランザクションを停止するかどうかを確認するプロンプトが表示されます。

    停止する場合は「OK」をクリックし、凍結オプションを中止する場合は「キャンセル」をクリックします。

    「トランザクションを凍結」オプションを使用すると、新しいトランザクションは開始されず、既存のトランザクションは次の論理的な段階で凍結されます。

  • トランザクションを凍結解除

    「トランザクションを凍結解除」オプションを使うと、凍結コマンドによって停止されていたすべてのトランザクションが再開されます。

    確認のためのプロンプトが表示されます。既存のすべてのトランザクションを凍結解除する場合は「OK」をクリックします。

  • 更新

    「更新」ボタンを定期的にクリックして、期限切れのトランザクションをビューから削除し、現在実行されているトランザクションをウィンドウに表示してください。



トランザクションの監視

フレームワークの監視によって、モジュールに関する各種のプロパティを表示できます。これによりシステムの内部情報を表示することで、アプリケーションパラメータを微調整したり、ボトルネックを検出したり、アプリケーションの健全な動作を確認したりできます。

JTS は、より高度なトランザクション監視機能を提供します。Administration Tool によってすべての結果が表示されます。JTS が提供する機能は次のとおりです。

  • すべてのアクティブトランザクションを次の情報とともに表示

    • トランザクション ID

    • トランザクションを起動したコンポーネント

    • 状態 (prepared、running、rollbacked、committing)

    • トランザクションタイプ (グローバル/ローカル)

    • 経過時間

  • ローカルトランザクションとグローバルトランザクションの TPM を表示

    サンプルタイムの値が表示され、ユーザはこれを編集できます。このサンプルタイムは TPM の計算に使用され、その TPM が表示されます。総数のほかに、ローカルトランザクションの値とグローバルトランザクションの値もあります。

  • 各トランザクション (グローバルとトランザクションの両方) にかかる平均時間を表示。サンプルタイムでは、トランザクション、ローカルトランザクション、およびグローバルトランザクションの平均時間を表示


設定パラメータ

トランザクションマネージャ用の設定パラメータは次のとおりです。


表 9-1    トランザクションマネージャの設定パラメータ 

設定パラメータ

説明

デフォルト値

DefaultTxnType  

このキーは、トランザクションタイプ (ローカル/グローバル) を特定するために使用される  

local  

LogDirectory  

このディレクトリは JTS ログの保存に使用される  

$IAS_INSTALLDIR/ias/logs/jts  

RecoveryEnabled  

リカバリを有効にすると、KJS が起動したときに、保留中のトランザクションのリカバリが試行される (1 または 0、有効は 1、無効は 0 )  

0  

Timeout  

デフォルトのトランザクションタイムアウト (秒単位)  

60  

TimerThreadInterval  

タイムアウトになったトランザクションを削除するためにタイムアウトスレッドを起動する間隔 (秒単位)  

30  

TraceEnabled  

追跡を有効または無効にするために使用される (1 または 0 の値があり、有効は 1、無効は 0)  

0  

TraceFile  

追跡データはこのファイルに書き込まれる  

$IAS_INSTALLDIR/ias/logs/txntrace  

TraceLevel  

追跡レベルの指定に使用される (1 〜 6、1 が低レベルで 6 が高レベル)  

0  

これらのキーはすべて、レジストリの SOFTWARE/iPlanet/ApplicationServer/6.5/CCS0/TXNMGR の下にあります。




インダウトトランザクションの解決

Java サーバ (KJS) プロセスが突然終了したときなどには、ハングしたりインダウトトランザクションが発生したりすることがあります。Microsoft SQL Server の場合、インダウトトランザクションを手動で確定またはロールバックするために、DTC 管理者制御を使います。DTC 管理者制御は DAC とも呼ばれます。dac.exeWINNTSYSTEM32 ディレトリにあり、DTC とともにインストールされます。

DAC を起動したら、次の手順を実行してインダウトトランザクションを手動で確定またはロールバックします。

  1. iASAT ツールバーで「トランザクション」をクリックして、「トランザクション」ウィンドウを開きます。

  2. 「トランザクションマネージャ」タブをクリックします。

  3. 強制的に確定またはロールバックするトランザクションを選択し、「詳細」をクリックします。

  4. トランザクションを強制的にロールバックするには、「Resolve/Abort」をクリックします。

Oracle リソースマネージャの場合、「lock held by distributed transaction」というエラーが発生したら、データベースに接続し、グローバルトランザクションを明示的にロールバックする必要があります。グローバルトランザクションを明示的にロールバックするには、次の手順を実行します。

  1. dba_2pc_pending を参照して、そのトランザクションに対応するローカルトランザクション ID を調べます。dba_2pc_pending には、保留中のグローバルトランザクションに関する詳細がすべて記録されています。

    たとえば、SQLPLUS プロンプトに次の文字列を入力します。

    SQLPLUS>select * from dba_2pc_pending

  2. コマンドラインに次の文字列を入力してトランザクションをロールバックします。

    rollback force transaction_id

Sybase リソースマネージャの場合、「lock held by distributed transaction」というエラーが発生したら、データベースに接続し、グローバルトランザクションを明示的にロールバックする必要があります。グローバルトランザクションを明示的にロールバックするには、次の手順を実行します。

  1. sp_xa_scan_xact を実行してトランザクション ID リストを取得し、そのトランザクションに対応するローカルトランザクション ID を調べます。

  2. トランザクション ID と stat (commit または rollback) を指定して sp_finish_xact を実行し、ブランチを強制終了させます。


前へ     目次     索引     DocHome     次へ     
Copyright © 2002 Sun Microsystems, Inc. All rights reserved.

最新更新日 2002 年 3 月 6 日