前へ 目次 索引 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 コネクションとプールされたコネクションのプーリングをサポートするための新しいコネクションプーリングインフラストラクチャが実装されています。
トランザクションマネージャに追加された新しい機能は次のとおりです。
グローバルトランザクションとローカルトランザクションを同時に実行できる柔軟性
新しいトランザクションマネージャでは、管理制御、監視、および追跡の機能が改善されています。iPlanet Application Server Administration Tool は、管理および監視の機能をサポートするために大幅に拡張されています。次の 3 つのレベルでトランザクションタイプを指定できるユーザに対するプロビジョン
リカバリのサポート
- iPlanet Application Server は、まず、パッケージ名の下を参照し、次にコンポーネント <classdef¥<guid>、最後にレジストリ内の <CCSO¥TXNMGR> にあるインスタンス全体の値を参照することによって特定のコンポーネントまたはアプリケーションのトランザクションタイプを決定します。
- iPlanet Application Server が起動すると、レジストリに登録されているデータソースが使用するすべてのデータベースから保留中のトランザクションを検索し、リカバリを実行します。リカバリ機能を無効にすることもできます。
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    サーバインスタンスのトランザクションプロパティの表示
トランザクションタイプ
タイムアウト
待機間隔
- 規定された時間内にトランザクションが完了されなかった場合にロールバックするまでの時間 (秒単位) を設定します。これは、トランザクションプロセス (たとえばステートフルセッションビーンなど) が開始されたが、アプリケーション設計にバグがあったために完了できなかった場合に役立ちます。
ログディレクトリ
サーバごとにトランザクションを表示する
トランザクションの詳細を表示するには、「トランザクションマネージャ」タブをクリックします。「トランザクションマネージャ」ダイアログボックスに、進行中の各種トランザクションの状態に関する詳細情報が表示されます。
サーバごとにトランザクションを管理する
一度に複数のエントリを選択してアクティブなトランザクションを制御できます。進行中のトランザクションを制御するためのオプションは、ダイアログボックスのいちばん下にあります。
ロールバックのマーク
更新
- 「ロールバックのマーク」オプションを使うと、アクティブなトランザクションをロールバックできます。目的のトランザクションを選択し、「ロールバックのマーク」をクリックします。
- Shift キーを押しながらトランザクションを選択し、「ロールバックのマーク」をクリックすることにより、複数のトランザクションを一度にロールバックすることもできます。
注 トランザクションをロールバックするときに、「トランザクションが存在しません」というメッセージが表示されることがあります。これは、コマンドが実行される前にそのトランザクションが完了してしまうことがあるためです。
プロセスごとにトランザクションを管理する
目的の iPlanet Application Server インスタンスの下で稼動している特定の KJS エンジンに接続されているトランザクションプロセスを個別に管理できます。このオプションを使うと、iPlanet Application Server で稼動するトランザクションを細かく制御できます。
選択したプロセス上のトランザクションを表示する
特定の KJS エンジンに関するトランザクションの状態を表示するには、左側のペインで目的のエンジンを選択します。そのエンジンで動作するトランザクションが右側のペインに表示されます。
図 9-3    特定の KJS エンジンのトランザクションプロパティの表示
プロセスごとにトランザクションを管理する
左側のペインでアプリケーションサーバインスタンスを選択し、メニューバーの「トランザクション」アイコンをクリックします。図 9-3 のようなダイアログボックスが表示されます。一度に複数のエントリを選択してアクティブなトランザクションを制御できます。進行中のトランザクションを制御するためのオプションは、ダイアログボックスのいちばん下にあります。
ロールバックのマーク
トランザクションを凍結
- 「ロールバックのマーク」オプションを使うと、アクティブなトランザクションがロールバックできます。目的のトランザクションを選択し、「ロールバックのマーク」をクリックします。
- 複数のトランザクションを選択して「ロールバックのマーク」をクリックすることにより、複数のトランザクションを一度にロールバックすることもできます。
トランザクションを凍結解除
- 「トランザクションを凍結」オプションを使うと、すべてのアクティブトランザクションが一時的に停止します。すべてのトランザクションを停止するかどうかを確認するプロンプトが表示されます。
- 停止する場合は「OK」をクリックし、凍結オプションを中止する場合は「キャンセル」をクリックします。
- 「トランザクションを凍結」オプションを使用すると、新しいトランザクションは開始されず、既存のトランザクションは次の論理的な段階で凍結されます。
更新
- 「トランザクションを凍結解除」オプションを使うと、凍結コマンドによって停止されていたすべてのトランザクションが再開されます。
- 確認のためのプロンプトが表示されます。既存のすべてのトランザクションを凍結解除する場合は「OK」をクリックします。
トランザクションの監視
フレームワークの監視によって、モジュールに関する各種のプロパティを表示できます。これによりシステムの内部情報を表示することで、アプリケーションパラメータを微調整したり、ボトルネックを検出したり、アプリケーションの健全な動作を確認したりできます。JTS は、より高度なトランザクション監視機能を提供します。Administration Tool によってすべての結果が表示されます。JTS が提供する機能は次のとおりです。
すべてのアクティブトランザクションを次の情報とともに表示
ローカルトランザクションとグローバルトランザクションの TPM を表示
各トランザクション (グローバルとトランザクションの両方) にかかる平均時間を表示。サンプルタイムでは、トランザクション、ローカルトランザクション、およびグローバルトランザクションの平均時間を表示
- サンプルタイムの値が表示され、ユーザはこれを編集できます。このサンプルタイムは TPM の計算に使用され、その TPM が表示されます。総数のほかに、ローカルトランザクションの値とグローバルトランザクションの値もあります。
設定パラメータ
トランザクションマネージャ用の設定パラメータは次のとおりです。
表 9-1    トランザクションマネージャの設定パラメータ
設定パラメータ
説明
デフォルト値
リカバリを有効にすると、KJS が起動したときに、保留中のトランザクションのリカバリが試行される (1 または 0、有効は 1、無効は 0 )
これらのキーはすべて、レジストリの SOFTWARE/iPlanet/ApplicationServer/6.5/CCS0/TXNMGR の下にあります。
インダウトトランザクションの解決
Java サーバ (KJS) プロセスが突然終了したときなどには、ハングしたりインダウトトランザクションが発生したりすることがあります。Microsoft SQL Server の場合、インダウトトランザクションを手動で確定またはロールバックするために、DTC 管理者制御を使います。DTC 管理者制御は DAC とも呼ばれます。dac.exe は WINNTSYSTEM32 ディレトリにあり、DTC とともにインストールされます。DAC を起動したら、次の手順を実行してインダウトトランザクションを手動で確定またはロールバックします。
Oracle リソースマネージャの場合、「lock held by distributed transaction」というエラーが発生したら、データベースに接続し、グローバルトランザクションを明示的にロールバックする必要があります。グローバルトランザクションを明示的にロールバックするには、次の手順を実行します。
dba_2pc_pending を参照して、そのトランザクションに対応するローカルトランザクション ID を調べます。dba_2pc_pending には、保留中のグローバルトランザクションに関する詳細がすべて記録されています。
Sybase リソースマネージャの場合、「lock held by distributed transaction」というエラーが発生したら、データベースに接続し、グローバルトランザクションを明示的にロールバックする必要があります。グローバルトランザクションを明示的にロールバックするには、次の手順を実行します。コマンドラインに次の文字列を入力してトランザクションをロールバックします。
sp_xa_scan_xact を実行してトランザクション ID リストを取得し、そのトランザクションに対応するローカルトランザクション ID を調べます。
トランザクション ID と stat (commit または rollback) を指定して sp_finish_xact を実行し、ブランチを強制終了させます。
前へ 目次 索引 DocHome 次へ
Copyright © 2002 Sun Microsystems, Inc. All rights reserved.
最新更新日 2002 年 3 月 6 日