|
| 注意 : | Oracle Tuxedo CORBA Java クライアントと Oracle Tuxedo CORBA Java クライアント ORB は Tuxedo 8.1 で非推奨になり、サポートされなくなりました。Oracle Tuxedo CORBA Java クライアントおよび Oracle Tuxedo CORBA Java クライアント ORB のテキスト参照、関連するコード サンプルはすべてサードパーティの Java ORB ライブラリの実装/実行の簡易化とプログラマによる参照だけに使用する必要があります。 |
| 注意 : | サード パーティの CORBA Java ORB のテクニカル サポートは、各ベンダによって提供されます。Oracle Tuxedo では、サード パーティの CORBA Java ORB に関する技術的なサポートやマニュアルは提供していません。 |
Oracle Tuxedo CORBA ノーティフィケーション サービスは、Oracle Tuxedo の EventBroker システムおよびキューイング システムに重ね合わせて使用します。つまり、CORBA ノーティフィケーション サービスを管理する場合は、それらのほかの Oracle Tuxedo システムも管理する必要があります。ノーティフィケーション サービスの管理には、Oracle Tuxedo ユーティリティの tmadmin、qmadmin、および ntsadmin を使用します。
ノーティフィケーション サービスの管理は、コンフィグレーションと管理という 2 つの関連するタスクで成り立ちます。それらの領域は別々に説明しますが、実際には相互に関連しています。したがって、コンフィグレーションを完全に理解するためには、管理についても理解する必要があります (その逆も同じ)。
イベント ノーティフィケーション サービス アプリケーションを実行するには、まず次のコンフィグレーション要件を満たさなければなりません。
データのフィルタ処理または Oracle Tuxedo ATMI 相互運用性をサブスクライバ アプリケーションで利用する場合は、次の手順を行ってサブスクリプションでデータのフィルタ処理を利用する必要があります。
UBBCONFIG ファイルで FML フィールド テーブル定義ファイルの配置場所を指定します (コード リスト 7-3 を参照)。
コード リスト 7-1 の中で、太字のコードはイベント ポスト元アプリケーションでデータのフィルタ処理がどのように実装されるのかを示します。名前/値ペア billing および patient_account の含まれるサブスクリプションだけがイベントを受信します。
CosNotification::StructuredEvent notif;
notif.header.fixed_header.event_type.domain_name =
CORBA::string_dup("HEALTHCARE");
notif.header.fixed_header.event_type.type_name =
CORBA::string_dup("HMO");
// このイベントの名前と値に基づいて追加フィルタを
// 指定する
notif.filterable_data.length(2);
notif.filterable_data[0].name = CORBA::string_dup("billing");
notif.filterable_data[0].value <<= CORBA::Long(1999);
notif.filterable_data[1].name =
CORBA::string_dup("patient_account");
notif.filterable_data[1].value <<= CORBA::Long(2345);
// 構造化イベントをチャネルにプッシュ
testChannel->push_structured_event(notif);
コード リスト 7-2 は、データのフィルタ処理を利用するために必要な FML フィールド テーブル定義ファイルを示しています。
*base 2000
#Field Name Field # Field Type Flags Comments
#----------- ------- ---------- ------ --------
billing 1 long - -
patient_account 2 long - -
コード リスト 7-3 は、環境変数ファイル (envfile) の内容を示しています。envfile には、FML フィールド定義ファイルの位置を格納します。
| 注意 : | 環境変数ファイルにはどのような名前でも使用できますが、その名前は ENVFILE コンフィグレーション オプション n (UBBCONFIG ファイルの SERVERS セクション) で指定された名前と同じでなければなりません。 |
FLDTBLDIR32=D:\tuxdir\EVENTS_Samples\ADVANCED_Simple_cxx\common
FIELDTBLS32=news_flds
コード リスト 7-4 は、Advanced サンプルの UBBCONFIG ファイルで FML フィールド テーブル ファイルの位置がどのように指定されるのかを示しています (太字部分)。
*SERVERS
TMSYSEVT
SRVGRP = NTS_GRP
SRVID = 1
TMUSREVT
SRVGRP = NTS_GRP>>$@
SRVID = 2ENVFILE = "D:\tuxdir\EVENTS_Samples\ADVANCED_Simple_CXX\envfile"
TMNTS
SRVGRP = NTS_GRP
SRVID = 3
ENVFILE = "D:\tuxdir\EVENTS_Samples\ADVANCED_Simple_CXX\envfile"
CLOPT = "-A -- -s TMNTSQS"
TMNTSFWD_T
SRVGRP = NTS_GRP
SRVID = 4
ENVFILE = "D:\tuxdir\EVENTS_Samples\ADVANCED_Simple_CXX\envfile"
TMNTSFWD_P
SRVGRP = NTS_GRP
SRVID = 5
ENVFILE = "D:\tuxdir\EVENTS_Samples\ADVANCED_Simple_CXX\envfile"
コールバック オブジェクトに関するオブジェクト参照のホストとポート番号の要件は次のとおりです。
ポート番号は、動的な範囲ではなくユーザの範囲で指定します。ユーザ範囲からポート番号を割り当てることで、共同クライアント/サーバ アプリケーションで使用するポートの不整合を回避できます。
ホストとポートを設定する方法は、プログラミング言語によって異なります。
C++ サブスクライバ アプリケーションの場合、共同クライアント/サーバ アプリケーションで使用する特定のポートを指定するには、共同クライアント/サーバ アプリケーションのプロセスを開始するコマンドラインで次のように指定します。
nnnn は、共同クライアント/サーバ アプリケーションのコールバック オブジェクトの呼び出しを作成するとき、および呼び出しをリスンするときに ORB で使用されるポートの番号です。
このコマンドは、共同クライアント/サーバ アプリケーション内のコールバック オブジェクトのオブジェクト参照を永続的なものにする場合、および共同クライアント/サーバ アプリケーションを停止して再起動する場合に使用します。このコマンドを使用しない場合、ORB ではランダムなポートが使用されます。共同クライアント/サーバ アプリケーションが停止して再起動されるときにランダムなポートが使用される場合、共同クライアント/サーバ アプリケーションの永続的なコールバック オブジェクトの呼び出しは失敗します。
ポート番号は、CORBA::orb_init メンバー関数の argv 引数への入力の一部です。argv 引数が渡されると、ORB がその情報を読み取り、そのプロセス中に作成されるすべてのオブジェクト参照用のポートを確立します。
永続的なサブスクリプションを使用する場合は、Oracle Tuxedo キューイング システムをコンフィグレーションおよび起動する必要があります。キューイング システムでは、トランザクション ログが必要です。コード リスト 7-5 は、tmadmin ユーティリティを使用してトランザクション ログを作成する方法を示しています。
>tmadmin
>crdl -b 100 -z D:\tuxdir\EVENTS_Samples\ADVANCED_Simple_CXX\TLOG
>crlog -m SITE1
>quit
>
永続的なイベントを使用する場合は、Oracle Tuxedo キューイング システムをコンフィグレーションおよび起動する必要があります。次の 2 つのイベント キューを作成しなければなりません。
TMNTSFWD_P
これは、永続的なサブスクリプション用のイベント転送キューです。イベントはまずこのキューに入り、その後に一致する永続的なサブスクリプションに転送されます。イベントを最初の試行で配信できない場合、そのイベントはこのキューに保持されて、配信が繰り返し試行されます。イベントを正常に配信できないうちに設定可能な再試行回数の上限に達した場合、そのイベントはエラー キューに移動されます。
このキューでは、次のコンフィグレーション パラメータを設定する必要があります。
TMNTSFWD_E
これはエラー キューです。このキューは、サブスクリプションに配信できないイベントを TMNTSFWD_P キューから受信します。このキューでは、TMNTSFWD_P 転送キューと同じコンフィグレーション パラメータを設定する必要があります。ただし、このキューはエラー キューであり、エラーは管理上の介入によってのみ削除されるので再試行回数の上限と再試行の時間間隔のパラメータは意味を成しません。
これらのキューをコンフィグレーションするには、次の手順を行います。
システムを調整して最大限の性能を引き出すためには、次のパラメータの最適な値を割り出す必要があります。
一時的なサブスクリプションのスペース パラメータの値は次のように割り出します。
たとえば、10 のイベントが 50 のサブスクライバにパイプラインで配信されると仮定し、2 つの一時的な転送サーバを起動して、それらのサーバで IPC キューが共有されないとすると (つまり MSSQ は不使用)、IPC キュースペースの必要量は次のようになります。
10 イベント * 50 サブスクライバ * 1000 バイト / 2 転送サーバ = 250,000 バイト
永続的なサブスクリプションのスペース パラメータの値は次のように割り出します。
qmadmin を使用して永続的なイベントの qspace を作成する場合は、まず最初にデバイスを作成します。サイズは、ステップ 3e で算出された値を使用します (約 1500 ページ)。次に、qspace のサイズを指定します。サイズは、ステップ 3d で算出された値を使用します (約 1450 ページ)。次に、保留キューおよびエラー キューに存在できるイベントの数を指定します。以降の節では、qspace を作成およびコンフィグレーションする方法を説明します。
qmadmin コマンド ユーティリティを使用すると、ディスク上にキュースペースのデバイスを作成できます。
キュースペースを作成するには、まず汎用デバイス リスト (UDL) でそのエントリを作成する必要があります。コード リスト 7-6 は、コマンドの例を示しています。
prompt>qmadmin d:\smith\reg\QUE
qmadmin - Copyright (c) 1996-1999 BEA Systems, Inc.
Portions * Copyright 1986-1997 RSA Data Security, Inc.
All Rights Reserved.
Distributed under license by BEA Systems, Inc.
Oracle Tuxedo is a registered trademark.QMCONFIG=d:\smith\reg\QUE
> crdl d:\smith\reg\QUE 0 1100
Created device d:\smith\reg\QUE, offset 0, size 1100
on d:\smith\reg\QUE
ディスク上でデバイスを作成する方法の詳細については、『Tuxedo /Q コンポーネント』を参照してください。
キュースペースをコンフィグレーションするには、qmdamin qspacecreate コマンドを使用します。キュースペースでは、IPC 資源が使用されます。そのため、キュースペースを定義する場合は、共有メモリ セグメントとセマフォを割り当てることになります。qspacecreate コマンドを使用する最も簡単な方法は、プロンプトを表示することです。コード リスト 7-7 は、Advanced サンプル アプリケーション用にコンフィグレーションされたキュースペースの例を示しています。
> qspacecreate
Queue space name: TMNTSQS
IPC Key for queue space: 52359
Size of queue space in disk pages: 1050
Number of queues in queue space: 2
Number of concurrent transactions in queue space: 10
Number of concurrent processes in queue space: 10
Number of messages in queue space: 500
Error queue name: TMNTSFWD_E
Initialize extents (y, n [default=n]): y
Blocking factor [default=16]:
コード リスト 7-7 で作成されるキュースペースでは、次のサイズ設定に注意してください。
Number of messages in queue space:500
Size of queue space in disk pages:1050
crdl コマンドを使用して設定します (コード リスト 7-6 を参照)。
キュースペース作成の詳細については、『Tuxedo /Q コンポーネント』を参照してください。
使用する各キューを作成するには、qmadmin qcreate コマンドを使用します。キューを作成するには、まず qmadmin qopen コマンドでキュースペースを開く必要があります。キュー スペース名が指定されていない場合は、qopen で名前を入力するように求められます。
コード リスト 7-8 は、Advanced サンプル アプリケーション用に作成される TMNTSFWD_P キューと TMNTSFWD_E キューの作成例を示しています。
> qopen
Queue space name: TMNTSQS
> qcreate
Queue name: TMNTSFWD_P
Queue order (priority, time, fifo, lifo): fifo
Out-of-ordering enqueuing (top, msgid, [default=none]): none
Retries [default=0]: 5
Retry delay in seconds [default=0]: 3
High limit for queue capacity warning (b for bytes used, B for
blocks used, % for percent used, m for messages [default=100%]):
80%
Reset (low) limit for queue capacity warning [default=0%]: 0%
Queue capacity command:
No default queue capacity command
Queue 'TMNTSFWD_P' created
> qcreate
Queue name: TMNTSFWD_E
Queue order (priority, time, fifo, lifo): fifo
Out-of-ordering enqueuing (top, msgid, [default=none]): none
Retries [default=0]: 2
Retry delay in seconds [default=0]: 30
High limit for queue capacity warning (b for bytes used, B for
blocks used, % for percent used, m for messages [default=100%]):
80%
Reset (low) limit for queue capacity warning [default=0%]: 0%
Queue capacity command:
No default queue capacity command
Q_CAT:1438: INFO: Create queue - error queue TMNTSFWD_E created
Queue 'TMNTSFWD_E' created
> q
キュー作成の詳細については、『Tuxedo /Q コンポーネント』を参照してください。
Microsoft Windows システム向けの Oracle Tuxedo ソフトウェア製品には、プロセス間通信のサブシステムである Oracle Tuxedo IPC Helper (TUXIPC) が同梱されています。IPC Helper はほとんどのマシンではインストール時の設定で実行されますが、コントロール パネル アプレットにある [IPC Resources] ページを使用して、TUXIPC サブシステムを調整し、性能を最大化することもできます。
[IPC] コントロール パネルの [IPC Resources] ページを表示するには、次の手順を行います。
Oracle Tuxedo マシンの IPC 設定を定義するには、次の手順を行います。
実行中の Oracle Tuxedo サーバ アプリケーションのパフォーマンスは、パフォーマンス モニタで確認できます。
パフォーマンス モニタを起動するには、
[スタート|プログラム|管理ツール|パフォーマンス モニタ] を選択します。パフォーマンス モニタの画面が表示されます (図 7-3)。

イベントのポスト元アプリケーションとサブスクライバ アプリケーションが Oracle Tuxedo ドメインの CORBA オブジェクト (この場合はノーティフィケーション サービス) と通信するためには、ノーティフィケーション サービスで UBBCONFIG ファイルが必要です。UBBCONFIG ファイルは、ノーティフィケーション サービス アプリケーションの開発の過程で記述する必要があります。そうしないと、アプリケーションをビルドして実行することができません。
UBBCONFIG ファイルを記述した後は、tmloadcf コマンドを使用して TUXCONFIG ファイル (実行時に使用) を生成します。したがって、TUXCONFIG ファイルはノーティフィケーション サービス アプリケーションの起動前に存在していなければなりません。TUXCONFIG ファイルは、バイナリ形式の UBBCONFIG ファイルです。tmloadcf コマンドの使用例を次に示します。
tmloadcf -y ubb
UBBCONFIG ファイルを記述する前に、ノーティフィケーション サービス アプリケーションのコンフィグレーション要件をリストしておく必要があります。要件をリストするためには、サブスクリプションをサポートするために必要なサーバとプロセスを特定します。
表 7-1 は、異なるタイプのサブスクリプションのコンフィグレーション要件を示しています。
IIOP が使用されるイベント サブスクライバ アプリケーションを使用する場合は、IIOP ハンドラ (ISH) に接続されていないコールバック オブジェクトを呼び出せるようにアウトバウンド IIOP を有効にするパラメータで、UBBCONFIG ファイルの IIOP リスナ (ISL) コマンドをコンフィグレーションする必要があります。ISL コマンドの -O オプション (大文字の O) はアウトバウンド IIOP を有効にします。追加パラメータを使用すると、システム管理者はノーティフィケーション サービス アプリケーションの最適なコンフィグレーションを取得できます。ISL コマンドの詳細については、「Oracle Tuxedo アプリケーションの設定」を参照してください。
ノーティフィケーション サービス アプリケーションを開発するときには、UBBCONFIG ファイルの SERVERS セクションで次のタイプのサーバを設定できます。
TMUSREVT
tppost(3) からのイベント レポート用メッセージ バッファを処理し、EventBroker としてそれらのバッファをフィルタ処理して配信する Oracle Tuxedo システム付属のサーバ (必須)。
TMNTS
サブスクリプションおよびイベントのポストの要求を処理する Oracle Tuxedo ノーティフィケーション サービス サーバ (必須)。
TMNTSFWD_T
一時的なサブスクリプションのサブスクライバに一時的なイベントを転送する Oracle Tuxedo ノーティフィケーション サービス サーバ (一時的なサブスクリプションで必須)。
永続的なサブスクリプションのあるサブスクライバに永続的なイベントを転送する Oracle Tuxedo ノーティフィケーション サービス サーバ。サブスクライバに配信できないイベントはエラー キューに送信されます (永続的なサブスクリプションで必須)。
イベント キューを管理する Oracle Tuxedo サーバ (永続的なサブスクリプションで必須)。
永続的なサブスクライバに転送できるように、イベントをノーティフィケーション サービス TMNTSFWD_P サーバに転送する Oracle Tuxedo サーバ (永続的なサブスクリプションで必須)。
ISL
Oracle Tuxedo IIOP サーバ リスナ/ハンドラ プロセス (イベントのポスト元またはサブスクライバがローカル ドメインの外側にある場合に必須)。
コード リスト 7-9 は、ノーティフィケーション サービスの Introductory サンプル アプリケーションの UBBCONFIG ファイルです。Introductory サンプル アプリケーションでは一時的なサブスクリプションのみがサポートされており、永続的なサブスクリプションまたはデータのフィルタ処理はサポートされていません。
# この UBBCONFIG ファイルは一時的なサブスクリプションのみをサポートし、
# 永続的なサブスクリプションまたはデータのフィルタ処理はサポートしない
*RESOURCES
IPCKEY 52359
DOMAINID events_intro_simple_cxx
MASTER SITE1
MODEL SHM
#---------------------------------------------------------------
*MACHINES
"BEANIE"
LMID = SITE1
APPDIR = "D:\tuxdir\EVENTS~1\INTROD~2"
TUXCONFIG = "D:\tuxdir\EVENTS~1\INTROD~2\tuxconfig"
TUXDIR = "d:\tuxdir"
MAXWSCLIENTS = 10
ULOGPFX = "D:\tuxdir\EVENTS~1\INTROD~2\ULOG"
#----------------------------------------------------------------
# 一時的なイベントを使用するので、グループがトランザクション
# に関与する必要はない
*GROUPS
SYS_GRP
LMID = SITE1
GRPNO = 1
#---------------------------------------------------------------
*SERVERS
DEFAULT:
CLOPT = "-A"
TMSYSEVT
SRVGRP = SYS_GRP
SRVID = 1
TMUSREVT
SRVGRP = SYS_GRP
SRVID = 2
TMFFNAME
SRVGRP = SYS_GRP
SRVID = 3
CLOPT = "-A -- -N -M"
TMFFNAME
SRVGRP = SYS_GRP
SRVID = 4
CLOPT = "-A -- -N"
TMFFNAME
SRVGRP = SYS_GRP
SRVID = 5
CLOPT = "-A -- -F"
# ノーティフィケーション サービス サーバを起動
#
TMNTS
SRVGRP = SYS_GRP
SRVID = 6
# ノーティフィケーション サービスの一時的なイベント転送サーバを起動
#
TMNTSFWD_T
SRVGRP = SYS_GRP
SRVID = 7
# クライアントのコールバックを使用するので -O を使用して ISL を起動
ISL
SRVGRP = SYS_GRP
SRVID = 8
CLOPT = "-A -- -O -n //BEANIE:2359"
#---------------------------------------------------------------
*SERVICES
コード リスト 7-10 のサンプル コードは、ノーティフィケーション サービスの Advanced サンプル アプリケーションからの引用です。Advanced サンプル アプリケーションでは、一時的なサブスクリプションと永続的なサブスクリプションおよびデータのフィルタ処理がサポートされています。
# この UBBCONFIG ファイルは一時的なサブスクリプションと永続的な*RESOURCES
# サブスクリプションおよびデータのフィルタ処理をサポートする
IPCKEY 52363
DOMAINID events_advanced_simple_cxx
MASTER SITE1
MODEL SHM
#---------------------------------------------------------------
*MACHINES
"BEANIE"
LMID = SITE1
APPDIR = "D:\tuxdir\EVENTS~1\ADVANC~1"
TUXCONFIG = "D:\tuxdir\EVENTS~1\ADVANC~1\tuxconfig"
TUXDIR = "d:\tuxdir"
MAXWSCLIENTS = 10
ULOGPFX = "D:\tuxdir\EVENTS~1\ADVANC~1\ULOG"
#
# 永続的なイベントを使用するので、トランザクション ログが必要
#
TLOGDEVICE = "D:\tuxdir\EVENTS~1\ADVANC~1\TLOG"
TLOGSIZE = 10
#---------------------------------------------------------------
*GROUPS
SYS_GRP
LMID = SITE1
GRPNO = 1
# ノーティフィケーション サービス サーバの NULL トランザクション
# グループを作成する
#
NTS_GRP
LMID = SITE1
GRPNO = 2
TMSNAME = TMS
TMSCOUNT = 2
# 永続的なイベントを使用するので、永続的なキューが必要
# キュー サーバのキュー トランザクション グループを作成
#
QUE_GRP
LMID = SITE1
GRPNO = 3
TMSNAME = TMS_QM
TMSCOUNT = 2
#
# 作成した QUE スペースをキュー グループに管理させる
# TMNTSQS として指定するキュースペースの名前は、作成したキュースペース
# の名前と同じでなければならない
#
OPENINFO = "TUXEDO/QM:D:\tuxdir\EVENTS~1\ADVANC~1\QUE;TMNTSQS"
#---------------------------------------------------------------
*SERVERS
DEFAULT:
CLOPT = "-A"
#
# キュー サーバを起動
# CLOPT の -s オプションで指定するキュースペースの名前は、
# 作成したキュースペースの名前と同じでなければならない
#
TMQUEUE
SRVGRP = QUE_GRP
SRVID = 1
CLOPT = "-s TMNTSQS:TMQUEUE -- "
#
# キュー転送サーバを起動し、イベントをノーティフィケーション サービス
# の永続的な転送サーバに転送させる
#
TMQFORWARD
SRVGRP = QUE_GRP
SRVID = 2
CLOPT = "-- -i 2 -q TMNTSFWD_P"
TMSYSEVT
SRVGRP = NTS_GRP
SRVID = 1
#
# ユーザ EventBroker を起動する。ユーザ EventBroker が
# 「Story」fml フィールドの定義を見つけることができるよ
# うに環境ファイルを渡す。これで、ユーザ EventBroker が
# ファイルを渡す
#
TMUSREVT
SRVGRP = NTS_GRP
SRVID = 2
ENVFILE = "D:\tuxdir\EVENTS~1\ADVANC~1\envfile"
TMFFNAME
SRVGRP = SYS_GRP
SRVID = 1
CLOPT = "-A -- -N -M"
TMFFNAME
SRVGRP = SYS_GRP
SRVID = 2
CLOPT = "-A -- -N"
TMFFNAME
SRVGRP = SYS_GRP
SRVID = 3
CLOPT = "-A -- -F"
#
# ノーティフィケーション サービス サーバを起動する。
# ノーティフィケーション サーバがデータのフィルタ処理を実行
# できるように環境ファイルを渡す。永続的なイベントを使用するので、
# -s オプションを指定しなければならない。-s オプションは、TMNTSQS
# としてキュースペースの名前を指定する。この名前は作成したキュー
# スペースの名前と同じでなければならない
#
TMNTS
SRVGRP = NTS_GRP
SRVID = 3
ENVFILE = "D:\tuxdir\EVENTS~1\ADVANC~1\envfile"
CLOPT = "-A -- -s TMNTSQS"
#
# ノーティフィケーション サービスの一時的なイベント転送サーバを
# 起動する。サーバがデータのフィルタ処理を実行できるように環境
# ファイルを渡す
#
TMNTSFWD_T
SRVGRP = NTS_GRP
SRVID = 4
ENVFILE = "D:\tuxdir\EVENTS~1\ADVANC~1\envfile"
#
# ノーティフィケーション サービスの永続的なイベント転送サーバを
# 起動する。サーバがデータのフィルタ処理を実行できるように環境
# ファイルを渡す
#
TMNTSFWD_P
SRVGRP = NTS_GRP
SRVID = 5
ENVFILE = "D:\tuxdir\EVENTS~1\ADVANC~1\envfile"
#
# クライアントのコールバックを使用するので -O を使用して ISL を起動
#
ISL
SRVGRP = SYS_GRP
SRVID = 4
CLOPT = "-A -- -O -n //BEANIE:2363"
#---------------------------------------------------------------
*SERVICES
ノーティフィケーション サービス アプリケーションをデプロイした後は、次の管理タスクを継続的に実行する必要があります。
複数の EventBroker をコンフィグレーションする場合は、ノーティフィケーション サービスのサブスクリプション データベースで同期を取る必要があります。同期プロセスは時間を要し (イベントの配信に影響することがある)、ネットワーク トラフィックを増大させるので、イベントのトラフィックが要求しない限りは複数の EventBroker をコンフィグレーションしないでください。
複数の EventBroker をコンフィグレーションするときには、TMUSREVT サーバの -P オプションを使用してデータベースの同期に要する時間をコンフィグレーションできます。このオプションの設定方法については、『Oracle Tuxedo のファイル形式とデータ記述方法』の「TMUSREVT(5)」を参照してください。
| 注意 : | データベースの同期に要する時間は、サブスクライバがサブスクライブしてからイベントを受信するまでの所要時間に影響します。また、サブスクライバがアンサブスクライブしてからイベントの受信が停止されるまでの所要時間にも影響します。 |
サブスクリプションは、サブスクライバが永続的なサブスクリプションを作成し、アンサブスクライブせずに停止してから、再起動することなくノーティフィケーション サービスに再接続しなかった場合、またはサブスクライバがどのイベントとも一致しないサブスクリプションを作成した場合にデッド状態になります。サブスクライバでは永続的なサブスクリプションを作成してから、アンサブスクライブせずに停止することができますが、定期的に再接続して蓄積されたイベントを取得しないとエラーになります。ノーティフィケーション サービスでは永続的なサブスクリプションと一致するイベントの配信が定期的に試行されるので、そのようなイベントはサブスクライバが接続されていない間蓄積され、キュースペースを消費し、システム リソースを浪費します。
どのイベントとも一致することのないサブスクリプションは、意味を成さないので作成しないようにしてください。また、ポストされた各イベントは各サブスクリプションと照合しなければならないので、サブスクリプションはシステム リソースを消費します。
表 7-2 の ntsadmin コマンドを使用すると、すべてのサブスクリプションを表示し、各サブスクリプションの保留キューとエラー キューにどのくらいの数のイベントが入っているのかを確認できます。また、ntsadmin コマンドを使用してサブスクリプションを削除したり、エラー キューのイベントを保留キューに移動したりすることもできます。ntsadmin ユーティリティの詳細については、「ntsadmin」を参照してください。
自動的にデッド サブスクリプションを検出する手段はありませんが、ntsadmin ユーティリティを利用して、サブスクリプションがデッド状態かどうか、いつデッド状態になるのかを判断することはできます。
キューは、固定量のスペースを割り当てて作成します。このスペースは、イベントが蓄積されるにつれて消費されていきます。キューが一杯になると、それ以降はイベントをキューに入れることはできません。
キューの使用率をモニタするには、qmadmin または ntsadmin を使用します (『Tuxedo コマンド リファレンス』の「qmadmin(1)」を参照)。
保留イベントを保持するためにキュースペースが作成されたときには、そのキュースペースで保持できるイベントの最大数が指定されました。たとえば、Advanced サンプル アプリケーションでは、TMNTSQS キュースペースのイベントの最大数は 200 に設定されました (「イベント キューの作成」を参照)。キュースペースの容量がわかっていれば、ntsadmin pendevents コマンドを使用してイベント キューで保留されているイベントの数を確認できます。イベント キューが一杯であるか、一杯に近い場合は、イベント最大数の設定を増やすか、イベント キューの数を増やす必要があります。
| 注意 : | qmadmin qcreate コマンドでしきい値コマンド オプション (cmd) を使用すると、キューがいっぱいに近くなったときに警告を生成することができます。このコマンドの詳細については、『Tuxedo コマンド リファレンス』の「qmadmin(1)」を参照してください。 |
ntsadmin コマンドの rmerrevents および rmpendevents を使用すると、保留キューまたはエラー キューからイベントをパージできます。
| 警告 : | キューからイベントを削除した後は、そのイベントを復元することはできません。イベントは完全に消滅し、サブスクライバ アプリケーションがそのイベントを受信することはありません。 |
イベントの配信が事前に設定された回数試行された後、そのイベントはエラー キューに移動します。イベントがエラー キューに移動されたら、管理者はシステムからそのイベントをパージするか、そのイベントを保留キューに戻さなければなりません。イベントのパージについては、前節で説明しています。
エラー キューから保留キューにイベントを移動するということは、イベント配信の再開を要求するということです。イベント配信の失敗はシステム リソースを消費するので、配信の障害となっていた状況が修正されている場合以外は保留キューにイベントを戻さないでください。イベントを保留キューに戻すには、ntsadmin retryerrevents コマンドを使用します。
この節では、ntsadmin ユーティリティについて説明します。
Oracle Tuxedo CORBA ノーティフィケーション サービス管理コマンドのインタプリタです。
ノーティフィケーション サービスには、CORBA ノーティフィケーション サービス アプリケーションで次のタスクを実行するコマンドを備える管理コマンド インタプリタ (ntsadmin) があります。
| 注意 : | アプリケーションに一時的なサブスクリプションしかない場合、ntsadmin を入力してプログラムを起動すると、永続的なサブスクリプション用のコマンドは無効になります。 |
| 注意 : | ntsadmin を使用するには、事前にノーティフィケーション サービスが実行されていなければなりません。 |
コマンド プロンプトで q を入力すると、ntsadmin プログラムを終了できます。Break キーを押すと、コマンドからの出力を終了できます。その後、プログラムは新しいコマンドの入力を要求します。
ntsadmin からの出力は、使用されているページ割りコマンドに従ってページ割りされます (paginate コマンドを参照)。
| 注意 : | subscription コマンドの出力は、verbose コマンドの設定によって異なります。 |
TMNTS、TMNTSFWD_T、TMNTSFWD_P、qmadmin
コマンドは、フル ネームか略称で入力できます (略称がある場合は、フル ネームの後にかっこで示されている)。コマンドの後には、適切な引数を入力します。角括弧 [] で示されている引数はオプションです。中かっこ {} で示されている引数は、相互に排他的なオプションの選択を示します。各コマンドには、次のオプションがあります。
|
|||
subscriptions (sub) [{-i identifier |-n name |-t | -p}]
| 注意 : | subscription コマンドの出力は、冗長モードが有効かどうかによって異なります (verbose コマンドについては後述)。コード リスト 7-11 は、冗長モードが有効な場合と無効な場合の subscription の出力例を示しています。 |
> verbose on
Verbose mode is now on
> sub
ID: 1000000006
Name: marcello
QoS: Transient
Qspace: <N/A>
Expression: stock trade\.quote
Filter: stock_name %% 'BEAS' && price_per_share > 150
ID: 1000000005
Name: marcello
QoS: Persistent
Qspace: TMNTSQS
Expression: stock trade\.sell
Filter:
ID: 1000000004
Name: marcello
QoS: Persistent
Qspace: TMNTSQS
Expression: stock trade\.buy
Filter:
> verbose off
Verbose mode is now off
> sub
ID Name Expression
-- ---- ----------
1000000006 marcello [T] stock trade\.quote
1000000005 marcello [P] stock trade\.sell
1000000004 marcello [P] stock trade\.buy
rmsubscriptions (rmsub) [{-i identifier |-n name |-t | -p]}[-y]
-y が使用されている場合以外は確認を要求します。
pendevents (pevt) [{-i identifier |-n name}]
rmpendevents (rmpevt) [{-i identifier |-n name |-o}][-y]
-o が指定された場合は、サブスクリプション データベースに対応するサブスクリプションのないすべてのイベントが削除されます。
-y が指定されている場合以外は確認を要求します。このコマンドでは、削除されたイベントの数が表示されます。
errevents (eevt) [{-i identifier |-n name}]
rmerrevents (rmeevt) [{-i identifier |-n name |-o}][-y]
-o が指定された場合は、サブスクリプション データベースに対応するサブスクリプションのないすべてのイベントが削除されます。
-y が指定されている場合以外は確認を要求します。このコマンドでは、削除されたイベントの数が表示されます。
retryerrevents (reteevt) [{-i identifier |-n name}][-y]
-y が使用されている場合以外は確認を要求します。このコマンドでは、エラー キューから保留キューに移動されたイベントの数が表示されます。
quit (q)
echo (e) [{off |on}]
help (h) [{command |all}]
all が指定されている場合は、すべてのコマンドの説明が表示されます。引数を省略すると、すべてのコマンドの構文が表示されます。
paginate (page) [{off |on}]
on です。ページ割りは、標準入力と標準出力が両方とも端末デバイスである場合に限り有効にできます。シェル環境変数 PAGER を使用すると、出力のページングに使用されるデフォルトのコマンドをオーバーライドできます。デフォルトのページング コマンドは、ネイティブのオペレーション システム環境に固有のページャです。たとえば、コマンド pg は UNIX オペレーティング システムのデフォルトです。
verbose (v) [{on | off }]
! shellcommand
!!
#[text]
<CR>
この節では、ntsadmin ユーティリティの使用例を紹介します。
コード リスト 7-12 は、ntsadmin を使用してエラー キューから保留キューにイベントを移動する例を示しています。このタスクは次のように実行されます。
marcello を検索します。subscription_id を使用して、エラー キューにあるイベントの情報を表示します。D:\smith\reg>ntsadminOracle Tuxedo
ntsadmin - Copyright (c) 1996-1999 BEA Systems, Inc.
Portions * Copyright 1986-1997 RSA Data Security, Inc.
All Rights Reserved.
Distributed under license by BEA Systems, Inc.is a registered trademark.
INFO: /Q Qspace - TMNTSQS
INFO: /Q Device - D:\smith\reg\QUE (SITE1)
> subscriptions -n marcello
ID Name Expression
-- ---- ----------
1000000002 marcello [T] stock trade\.quote
1000000001 marcello [P] stock trade\.sell
1000000000 marcello [P] stock trade\.buy> verbose off
Verbose mode is now off> eevt -i 1000000003
ID Name Count
-- ---- -----
1000000003 marcello 1
> reteevt -i 1000000003 -y
1 event(s) retried
コード リスト 7-13 は、ntsadmin を使用してサブスクリプションを削除し、イベントをパージする例を示しています。
> rmsub -n BillJones -y
2 subscription(s) removed
> rmeevt -n marcello -y
1 event(s) removed
> rmpevt -n BillJones -y
No events removed
コード リスト 7-14 は、特定サブスクリプションの保留イベントを調べる方法を示しています。
> pevt -n marcello
ID Name Count
-- ---- -----
1000000003 marcello 1
ノーティフィケーション サービスでは、次の Oracle Tuxedo システム サーバも使用されます。これらのサーバの説明については、『Oracle Tuxedo のファイル形式とデータ記述方法』を参照してください。
サブスクリプションおよびイベントのポストの要求を処理します。
TMNTS SRVGRP=”identifier” SRVID=”number”queuespace
[CLOPT=”[-A] [servopts options]
[--[-S]”]
TMNTS は、サブスクリプションおよびイベントのポストのすべての要求を処理する Oracle Tuxedo 提供のサーバです。
-S queuespace
TMNTSFWD_P および TMNTSFWD_E という 2 つのキューがなければなりません。このオプションは、永続的なサブスクリプションでのみ必須です。
| 注意 : | QoS が Persistent のサブスクリプションを使用する場合は、システムが作動する前にキュースペース、イベントを保持するキュー、およびエラー キューを作成する必要があります。キュースペースの名前は、TMNTS サーバの CLOPT -S queuespace パラメータを使用して指定された queuespace 名と同じでなければなりません。イベント キューは、TMNTSFWD_P という名前に設定する必要があります。エラー キューは、TMNTSFWD_E という名前に設定する必要があります。 |
TMNTS サーバは、信頼性と可用性を高めるために複数を起動することができます。
TMNTS サーバは、イベントがトランザクションのコンテキストでポストされる場合はトランザクション グループに属していなければなりません。
TMNTS は、バージョン 5.0 以上の Oracle WebLogic Enterprise またはバージョン 8.0 以上の Oracle Tuxedo 上で実行しなければなりません。
TMNTS サーバは、TMUSREVT サーバと TMSYSEVT サーバが提供するサービスを利用します。したがって、システムが作動する前にそれらのサーバを起動する必要があります。一時的なサブスクリプションを使用する場合は、TMNTSFWD_T サーバもシステムの作動前に起動しなければなりません。永続的なサブスクリプションを使用する場合は、TMNTSFWD_P サーバ、TMQUEUE サーバ、および TMQFORWARD サーバもシステムの作動前に起動する必要があります。
*SERVERSTMNTS SRVGRP = NTS_GRP SRVID = 3
CLOPT = "-A -- -s TMNTSQS"
TMSYSEVT(5)、TMUSREVT(5)、TMQUEUE(5)、TMQFORWARD(5)、TMNTSFWD_P、TMNTSFWD_T(5)、UBBCONFIG(5)
TMNTSFWD_T SRVGRP=”identifier” SRVID=”number”
[CLOPT=”[-A][--”]
TMNTSFWD_T は、QoS が Transient のサブスクライバにイベントを転送する Oracle Tuxedo 提供のサーバです。イベントの配信に関連付けられるトランザクション コンテキストはありません。
| 注意 : | TMNTSFWD_T サーバは、信頼性と可用性を高めるために複数を起動することができます。 |
TMNTS は、バージョン 5.0 以上の Oracle WebLogic Enterprise またはバージョン 8.0 以上の Oracle Tuxedo 上で実行しなければなりません。
TMNTSFWD_T サーバは、TMNTS サーバ、TMUSREVT サーバ、および TMSYSEVT サーバが提供するサービスを利用します。したがって、システムが作動する前にそれらのサーバを起動する必要があります。
*SERVERS
TMNTSFWD_T SRVGRP = SYS_GRP SRVID = 7
TMSYSEVT(5)、TMUSREVT(5)、TMNTS(5)、TMNTSFWD_P、UBBCONFIG(5)。「一時的なサブスクリプションの IPC キュースペース」も参照してください。
TMNTSFWD_P SRVGRP=”identifier” SRVID=”number”
CLOPT=”[-A] [--”]
TMNTSFWD_P は、QoS が永続的であるサブスクライバにイベントを転送する Oracle Tuxedo 提供のサーバです。イベントの配信に関連付けられるトランザクション コンテキストはありません。
TMNTSFWD_P サーバは、信頼性と可用性を高めるために複数を起動することができます。
TMNTS は、バージョン 5.0 以上の Oracle WebLogic Enterprise またはバージョン 8.0 以上の Oracle Tuxedo 上で実行しなければなりません。
TMNTSFWD_P サーバは、TMNTS サーバ、TMUSREVT サーバ、TMSYSEVT サーバ、TMQUEUE サーバ、および TMQFORWARD サーバが提供するサービスを利用します。したがって、システムが作動する前にそれらのサーバを起動する必要があります。
このサーバは、トランザクション グループで起動する必要があります。
TMNTSFWD_P サーバは、TMQFORWARD サーバと同じ数だけ起動する必要があります。
*SERVERS
TMNTSFWD_P SRVGRP = NTS_GRP SRVID = 5
TMSYSEVT(5)、TMUSREVT(5)、TMNTS、TMNTSFWD_T、servopts(5)、UBBCONFIG(5)
|