Tuxedo CORBA ノーティフィケーション サービス

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

CORBA ノーティフィケーション サービスの管理

ここでは、以下の内容について説明します。

注意 : 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 ユーティリティの tmadminqmadmin、および ntsadmin を使用します。

ノーティフィケーション サービスの管理は、コンフィグレーションと管理という 2 つの関連するタスクで成り立ちます。それらの領域は別々に説明しますが、実際には相互に関連しています。したがって、コンフィグレーションを完全に理解するためには、管理についても理解する必要があります (その逆も同じ)。

 


ノーティフィケーション サービスのコンフィグレーション

イベント ノーティフィケーション サービス アプリケーションを実行するには、まず次のコンフィグレーション要件を満たさなければなりません。

 


データ フィルタのコンフィグレーション

データのフィルタ処理または Oracle Tuxedo ATMI 相互運用性をサブスクライバ アプリケーションで利用する場合は、次の手順を行ってサブスクリプションでデータのフィルタ処理を利用する必要があります。

  1. フィルタ処理を行うフィールドを記述する Oracle Tuxedo ATMI FML フィールド テーブル定義ファイルを作成します (コード リスト 7-2 を参照)。
  2. アプリケーションの起動時にフィールド定義ファイルの位置をノーティフィケーション サービス サーバに渡せるように、UBBCONFIG ファイルで FML フィールド テーブル定義ファイルの配置場所を指定します (コード リスト 7-3 を参照)。

コード リスト 7-1 の中で、太字のコードはイベント ポスト元アプリケーションでデータのフィルタ処理がどのように実装されるのかを示します。名前/値ペア billing および patient_account の含まれるサブスクリプションだけがイベントを受信します。

コード リスト 7-1 Oracle シンプル イベント API を使用したデータ フィルタ処理のサンプル (C++)
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 フィールド テーブル定義ファイルを示しています。

コード リスト 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 セクション) で指定された名前と同じでなければなりません。
コード リスト 7-3 データ フィルタ処理のための envfile の指定 (Microsoft Windows)
FLDTBLDIR32=D:\tuxdir\EVENTS_Samples\ADVANCED_Simple_cxx\common
FIELDTBLS32=news_flds

コード リスト 7-4 は、Advanced サンプルの UBBCONFIG ファイルで FML フィールド テーブル ファイルの位置がどのように指定されるのかを示しています (太字部分)。

コード リスト 7-4 UBBCONFIG ファイルでの FML フィールド定義ファイルの指定
*SERVERS
TMSYSEVT
SRVGRP = NTS_GRP
SRVID = 1
TMUSREVT
SRVGRP = NTS_GRP>>$@
SRVID = 2
ENVFILE = "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"

 


ホストとポートの設定

コールバック オブジェクトに関するオブジェクト参照のホストとポート番号の要件は次のとおりです。

ポート番号は、動的な範囲ではなくユーザの範囲で指定します。ユーザ範囲からポート番号を割り当てることで、共同クライアント/サーバ アプリケーションで使用するポートの不整合を回避できます。

ホストとポートを設定する方法は、プログラミング言語によって異なります。

 


トランザクション ログの作成

永続的なサブスクリプションを使用する場合は、Oracle Tuxedo キューイング システムをコンフィグレーションおよび起動する必要があります。キューイング システムでは、トランザクション ログが必要です。コード リスト 7-5 は、tmadmin ユーティリティを使用してトランザクション ログを作成する方法を示しています。

コード リスト 7-5 トランザクション ログの作成 (createtlog) (Microsoft Windows)
>tmadmin
>crdl -b 100 -z D:\tuxdir\EVENTS_Samples\ADVANCED_Simple_CXX\TLOG
>crlog -m SITE1
>quit
>

 


イベント キューの作成

永続的なイベントを使用する場合は、Oracle Tuxedo キューイング システムをコンフィグレーションおよび起動する必要があります。次の 2 つのイベント キューを作成しなければなりません。

これらのキューをコンフィグレーションするには、次の手順を行います。

  1. キュースペースのデバイスをディスク上に作成します。
  2. キュースペースをコンフィグレーションします。
  3. キューを作成します。

上記の手順については、以下の節を参照してください。

一時的および永続的なサブスクリプションのスペース パラメータの値の割り出し

システムを調整して最大限の性能を引き出すためには、次のパラメータの最適な値を割り出す必要があります。

一時的なサブスクリプションの IPC キュースペース

一時的なサブスクリプションのスペース パラメータの値は次のように割り出します。

  1. 一時的なサブスクリプションのパイプラインを通る可能性のあるイベントの数、つまり特定の時点で配信されている可能性のあるイベントの数を割り出します。この数は、イベントの数とそれらのイベントを受信するサブスクライバの数を乗算すると算出できます。
  2. イベントのサイズを割り出します。説明の便宜上、イベントは比較的小さく約 300 バイト以下と想定します。
  3. 起動する必要のある一時的な転送サーバの数を割り出します (たいていは 1 つか 2 つ)。マシン上のプロセッサごとに 1 つから始めるのが理想的です。
  4. 一時的なイベントを保持するのに必要な IPC キュースペースの量を割り出します。必要なスペースの量は、1000 バイトをパイプラインで許容するイベント数で乗算した値です。この値は、一時的な転送サーバの IPC キューの数で除算します。MSSQ セットを使用する場合は、1 つの IPC キューが一時的な転送サーバで共有されます。使用しない場合は、各転送サーバで独自の IPC キューが使用されます。
  5. たとえば、10 のイベントが 50 のサブスクライバにパイプラインで配信されると仮定し、2 つの一時的な転送サーバを起動して、それらのサーバで IPC キューが共有されないとすると (つまり MSSQ は不使用)、IPC キュースペースの必要量は次のようになります。

    10 イベント * 50 サブスクライバ * 1000 バイト / 2 転送サーバ = 250,000 バイト

  6. システム レジストリのエントリを変更して、IPC キューのサイズをこの値にコンフィグレーションします。その方法はプラットフォームによって異なります。

永続的なサブスクリプションの /Q キュー サイズ パラメータ

永続的なサブスクリプションのスペース パラメータの値は次のように割り出します。

  1. 永続的なサブスクリプションのパイプラインを通る可能性のあるイベントの数、つまり特定の時点で配信されている可能性のあるイベントの数を割り出します。この数は、イベントの数とそれらのイベントを受信するサブスクライバの数を乗算すると算出できます。
  2. イベントのサイズを割り出します。説明の便宜上、イベントは比較的小さく約 300 バイト以下と想定します。
  3. 永続的なイベントを保持するのに必要な /Q キューのサイズを割り出します (保留キューとエラー キューの両方)。次のように割り出します。
    1. ディスク ページのサイズを割り出します。それはプラットフォームによって異なります。たとえば Microsoft Windows の場合、ディスク ページは 500 バイトです。UNIX マシンの場合、ディスク ページのサイズは 500 ~ 4000 バイトです。
    2. 1 つのイベントを格納するのに必要なディスク ページの数を割り出します。たとえば、イベントごとに 1000 バイトが必要で、ディスク ページのサイズが 500 バイトである場合は、イベントごとに 2 つのディスク ページが必要になります。
    3. イベント全体で必要なディスク ページの数を割り出します。たとえば、500 の保留イベントと 200 のエラー イベントを許容し、1 つのイベントが 2 つのディスク ページを占める場合は、1400 のディスク ページが必要になります。
    4. qspace で必要なディスク ページの数を割り出します。これは、イベントに必要なディスク ページと qspace のオーバーヘッドのためのページの合計数です。たとえば、イベントで 1400 のディスク ページが必要な場合、qspace では約 1450 のディスク ページが必要です (50 ページはオーバーヘッド用)。
    5. qspace デバイスで必要なページ数を割り出します。これは、qspace に必要なディスク ページとデバイスのオーバーヘッドのためのページの合計数です。たとえば、qspace で 1450 のディスク ページが必要な場合、デバイスでは約 1500 のディスク ページが必要です (50 ページはデバイスのオーバーヘッド用)。
  4. qmadmin を使用して永続的なイベントの qspace を作成する場合は、まず最初にデバイスを作成します。サイズは、ステップ 3e で算出された値を使用します (約 1500 ページ)。次に、qspace のサイズを指定します。サイズは、ステップ 3d で算出された値を使用します (約 1450 ページ)。次に、保留キューおよびエラー キューに存在できるイベントの数を指定します。以降の節では、qspace を作成およびコンフィグレーションする方法を説明します。

ディスク上のキュースペースのデバイスの作成

qmadmin コマンド ユーティリティを使用すると、ディスク上にキュースペースのデバイスを作成できます。

キュースペースを作成するには、まず汎用デバイス リスト (UDL) でそのエントリを作成する必要があります。コード リスト 7-6 は、コマンドの例を示しています。

コード リスト 7-6 ディスク上のキュースペースのデバイスの作成 (UNIX)
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 サンプル アプリケーション用にコンフィグレーションされたキュースペースの例を示しています。

コード リスト 7-7 キュースペースの作成
> 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

このパラメータを 500 に設定すると、保留キューとエラー キューで合計 500 のイベントを格納するスペースが確保されます。

Size of queue space in disk pages:1050

Microsoft Windows では、各ディスク スペースのサイズが 500 バイトで、各イベントは 1000 バイトが必要です。その上、イベントごとに 2 つのディスク ページを供給する必要があります。保留キューとエラー キューに 500 のイベントが格納されると見積もっているので、1000 のディスク ページを供給しなければなりません。また、qspace のオーバーヘッドのために 50 のディスク ページが必要なので、qspace のサイズは 1050 ディスク ページに設定します。最後に、デバイスのオーバーヘッドでも 50 のディスク ページが必要なので、デバイスのサイズは 1100 ディスク ページになります。この値は、crdl コマンドを使用して設定します (コード リスト 7-6 を参照)。

キュースペース作成の詳細については、『Tuxedo /Q コンポーネント』を参照してください。

キューの作成

使用する各キューを作成するには、qmadmin qcreate コマンドを使用します。キューを作成するには、まず qmadmin qopen コマンドでキュースペースを開く必要があります。キュー スペース名が指定されていない場合は、qopen で名前を入力するように求められます。

コード リスト 7-8 は、Advanced サンプル アプリケーション用に作成される TMNTSFWD_P キューと TMNTSFWD_E キューの作成例を示しています。

コード リスト 7-8 キューの作成
> 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 での IPC パラメータの設定

Microsoft Windows システム向けの Oracle Tuxedo ソフトウェア製品には、プロセス間通信のサブシステムである Oracle Tuxedo IPC Helper (TUXIPC) が同梱されています。IPC Helper はほとんどのマシンではインストール時の設定で実行されますが、コントロール パネル アプレットにある [IPC Resources] ページを使用して、TUXIPC サブシステムを調整し、性能を最大化することもできます。

[IPC] コントロール パネルの [IPC Resources] ページを表示するには、次の手順を行います。

  1. [スタート|設定|コントロール パネル] を選択します。Microsoft Windows のコントロール パネルが表示されます (図 7-1)。
  2. 図 7-1 Microsoft Windows のコントロール パネル


    Microsoft Windows のコントロール パネル

  3. [Oracle Administration] アイコンをクリックします。[Oracle Administration] コントロール パネルが表示されます (図 7-2)。
  4. [IPC Resources] タブをクリックします。[Oracle Administration] コントロール パネルの [IPC Resources] コントロール パネル部分が表示されます (図 7-2)。
  5. 図 7-2 Microsoft Windows 向け Oracle Tuxedo ソフトウェアの [IPC Resources] コントロール パネル


    Microsoft Windows 向け Oracle Tuxedo ソフトウェアの [IPC Resources] コントロール パネル

Oracle Tuxedo マシンの IPC 設定を定義するには、次の手順を行います。

  1. [Current Resource: Default] ボックスで、[Use Default IPC Settings] チェック ボックスをクリックしてクリアします。
  2. 挿入ボックスをクリックします。
  3. マシンの名前を入力して Enter キーを押します。
  4. 設定する IPC 資源の横にあるフィールドをクリックし、必要な値を入力して、[Apply] をクリックします。[Apply] をクリックすると、変更が登録テーブルに保存されます。変更内容を有効にするには、tuxipc.exe サービスを一度終了してから再起動します。
  5. [OK] をクリックしてコントロール パネルを閉じます。

実行中の Oracle Tuxedo サーバ アプリケーションのパフォーマンスは、パフォーマンス モニタで確認できます。

パフォーマンス モニタを起動するには、
[スタート|プログラム|管理ツール|パフォーマンス モニタ] を選択します。パフォーマンス モニタの画面が表示されます (図 7-3)。

図 7-3 Microsoft Windows 向け Oracle Tuxedo ソフトウェアのパフォーマンス モニタ

Microsoft Windows 向け Oracle Tuxedo ソフトウェアのパフォーマンス モニタ

 


UBBCONFIG ファイルと TUXCONFIG ファイルの作成

イベントのポスト元アプリケーションとサブスクライバ アプリケーションが Oracle Tuxedo ドメインの CORBA オブジェクト (この場合はノーティフィケーション サービス) と通信するためには、ノーティフィケーション サービスで UBBCONFIG ファイルが必要です。UBBCONFIG ファイルは、ノーティフィケーション サービス アプリケーションの開発の過程で記述する必要があります。そうしないと、アプリケーションをビルドして実行することができません。

UBBCONFIG ファイルを記述した後は、tmloadcf コマンドを使用して TUXCONFIG ファイル (実行時に使用) を生成します。したがって、TUXCONFIG ファイルはノーティフィケーション サービス アプリケーションの起動前に存在していなければなりません。TUXCONFIG ファイルは、バイナリ形式の UBBCONFIG ファイルです。tmloadcf コマンドの使用例を次に示します。

tmloadcf -y ubb

UBBCONFIG ファイルを記述する前に、ノーティフィケーション サービス アプリケーションのコンフィグレーション要件をリストしておく必要があります。要件をリストするためには、サブスクリプションをサポートするために必要なサーバとプロセスを特定します。 表 7-1 は、異なるタイプのサブスクリプションのコンフィグレーション要件を示しています。

表 7-1 一時的および永続的なサブスクリプションのコンフィグレーション要件
サポート対象のサブスクリプション
UBBCONFIG ファイルに含まれなければならないサーバとプロセス
一時的なサブスクリプション
TMUSREVTTMNTS、および TMNTSFWD_T
永続的なサブスクリプション
TMUSREVTTMNTSTMNTSFWD_PTMQUEUE, TMQFORWARD

IIOP が使用されるイベント サブスクライバ アプリケーションを使用する場合は、IIOP ハンドラ (ISH) に接続されていないコールバック オブジェクトを呼び出せるようにアウトバウンド IIOP を有効にするパラメータで、UBBCONFIG ファイルの IIOP リスナ (ISL) コマンドをコンフィグレーションする必要があります。ISL コマンドの -O オプション (大文字の O) はアウトバウンド IIOP を有効にします。追加パラメータを使用すると、システム管理者はノーティフィケーション サービス アプリケーションの最適なコンフィグレーションを取得できます。ISL コマンドの詳細については、「Oracle Tuxedo アプリケーションの設定」を参照してください。

ノーティフィケーション サービス アプリケーションを開発するときには、UBBCONFIG ファイルの SERVERS セクションで次のタイプのサーバを設定できます。

コード リスト 7-9 は、ノーティフィケーション サービスの Introductory サンプル アプリケーションの UBBCONFIG ファイルです。Introductory サンプル アプリケーションでは一時的なサブスクリプションのみがサポートされており、永続的なサブスクリプションまたはデータのフィルタ処理はサポートされていません。

コード リスト 7-9 Introductory サンプルの UBBCONFIG ファイル
# この 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 サンプル アプリケーションでは、一時的なサブスクリプションと永続的なサブスクリプションおよびデータのフィルタ処理がサポートされています。

コード リスト 7-10 Advanced サンプルの UBBCONFIG ファイル
# この 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

 


ノーティフィケーション サービスの管理

ノーティフィケーション サービス アプリケーションをデプロイした後は、次の管理タスクを継続的に実行する必要があります。

  1. データベースの同期
  2. システムからのデッド サブスクリプションのパージ
  3. キュー使用率のモニタ
  4. キューからの不要なイベントのパージ
  5. エラー キューのイベントの移動または削除

データベースの同期

複数の EventBroker をコンフィグレーションする場合は、ノーティフィケーション サービスのサブスクリプション データベースで同期を取る必要があります。同期プロセスは時間を要し (イベントの配信に影響することがある)、ネットワーク トラフィックを増大させるので、イベントのトラフィックが要求しない限りは複数の EventBroker をコンフィグレーションしないでください。

複数の EventBroker をコンフィグレーションするときには、TMUSREVT サーバの -P オプションを使用してデータベースの同期に要する時間をコンフィグレーションできます。このオプションの設定方法については、『Oracle Tuxedo のファイル形式とデータ記述方法』の「TMUSREVT(5)」を参照してください。

注意 : データベースの同期に要する時間は、サブスクライバがサブスクライブしてからイベントを受信するまでの所要時間に影響します。また、サブスクライバがアンサブスクライブしてからイベントの受信が停止されるまでの所要時間にも影響します。

システムからのデッド サブスクリプションのパージ

サブスクリプションは、サブスクライバが永続的なサブスクリプションを作成し、アンサブスクライブせずに停止してから、再起動することなくノーティフィケーション サービスに再接続しなかった場合、またはサブスクライバがどのイベントとも一致しないサブスクリプションを作成した場合にデッド状態になります。サブスクライバでは永続的なサブスクリプションを作成してから、アンサブスクライブせずに停止することができますが、定期的に再接続して蓄積されたイベントを取得しないとエラーになります。ノーティフィケーション サービスでは永続的なサブスクリプションと一致するイベントの配信が定期的に試行されるので、そのようなイベントはサブスクライバが接続されていない間蓄積され、キュースペースを消費し、システム リソースを浪費します。

どのイベントとも一致することのないサブスクリプションは、意味を成さないので作成しないようにしてください。また、ポストされた各イベントは各サブスクリプションと照合しなければならないので、サブスクリプションはシステム リソースを消費します。

表 7-2ntsadmin コマンドを使用すると、すべてのサブスクリプションを表示し、各サブスクリプションの保留キューとエラー キューにどのくらいの数のイベントが入っているのかを確認できます。また、ntsadmin コマンドを使用してサブスクリプションを削除したり、エラー キューのイベントを保留キューに移動したりすることもできます。ntsadmin ユーティリティの詳細については、「ntsadmin」を参照してください。

表 7-2 ntsadmin コマンドの概要
コマンド
説明
subscriptions
サブスクリプション データベースにあるサブスクリプションをリストします。
rmsubscriptions
サブスクリプション データベースのサブスクリプションを削除します。
pendevents
保留イベント キューのイベントについての情報を表示します (永続的なサブスクリプションのみ)。
rmpendevents
保留イベント キューのイベントを削除します (永続的なサブスクリプションのみ)。
errevents
イベント エラー キューのイベントをリストします (永続的なサブスクリプションのみ)。
rmerrevents
イベント エラー キューのイベントを削除します (永続的なサブスクリプションのみ)。

自動的にデッド サブスクリプションを検出する手段はありませんが、ntsadmin ユーティリティを利用して、サブスクリプションがデッド状態かどうか、いつデッド状態になるのかを判断することはできます。

キュー使用率のモニタ

キューは、固定量のスペースを割り当てて作成します。このスペースは、イベントが蓄積されるにつれて消費されていきます。キューが一杯になると、それ以降はイベントをキューに入れることはできません。

キューの使用率をモニタするには、qmadmin または ntsadmin を使用します (『Tuxedo コマンド リファレンス』の「qmadmin(1)」を参照)。

保留イベントを保持するためにキュースペースが作成されたときには、そのキュースペースで保持できるイベントの最大数が指定されました。たとえば、Advanced サンプル アプリケーションでは、TMNTSQS キュースペースのイベントの最大数は 200 に設定されました (「イベント キューの作成」を参照)。キュースペースの容量がわかっていれば、ntsadmin pendevents コマンドを使用してイベント キューで保留されているイベントの数を確認できます。イベント キューが一杯であるか、一杯に近い場合は、イベント最大数の設定を増やすか、イベント キューの数を増やす必要があります。

注意 : qmadmin qcreate コマンドでしきい値コマンド オプション (cmd) を使用すると、キューがいっぱいに近くなったときに警告を生成することができます。このコマンドの詳細については、『Tuxedo コマンド リファレンス』の「qmadmin(1)」を参照してください。

キューからの不要なイベントのパージ

ntsadmin コマンドの rmerrevents および rmpendevents を使用すると、保留キューまたはエラー キューからイベントをパージできます。

警告 : キューからイベントを削除した後は、そのイベントを復元することはできません。イベントは完全に消滅し、サブスクライバ アプリケーションがそのイベントを受信することはありません。

エラー キューの管理

イベントの配信が事前に設定された回数試行された後、そのイベントはエラー キューに移動します。イベントがエラー キューに移動されたら、管理者はシステムからそのイベントをパージするか、そのイベントを保留キューに戻さなければなりません。イベントのパージについては、前節で説明しています。

エラー キューから保留キューにイベントを移動するということは、イベント配信の再開を要求するということです。イベント配信の失敗はシステム リソースを消費するので、配信の障害となっていた状況が修正されている場合以外は保留キューにイベントを戻さないでください。イベントを保留キューに戻すには、ntsadmin retryerrevents コマンドを使用します。

 


ノーティフィケーション サービスの管理ユーティリティとコマンド

ここでは、以下の内容について説明します。

ntsadmin ユーティリティ

この節では、ntsadmin ユーティリティについて説明します。

 


ntsadmin

概要

Oracle Tuxedo CORBA ノーティフィケーション サービス管理コマンドのインタプリタです。

構文

ntsadmin

説明

ノーティフィケーション サービスには、CORBA ノーティフィケーション サービス アプリケーションで次のタスクを実行するコマンドを備える管理コマンド インタプリタ (ntsadmin) があります。

注意 : アプリケーションに一時的なサブスクリプションしかない場合、ntsadmin を入力してプログラムを起動すると、永続的なサブスクリプション用のコマンドは無効になります。
注意 : ntsadmin を使用するには、事前にノーティフィケーション サービスが実行されていなければなりません。

コマンド プロンプトで q を入力すると、ntsadmin プログラムを終了できます。Break キーを押すと、コマンドからの出力を終了できます。その後、プログラムは新しいコマンドの入力を要求します。

ntsadmin からの出力は、使用されているページ割りコマンドに従ってページ割りされます (paginate コマンドを参照)。

注意 : subscription コマンドの出力は、verbose コマンドの設定によって異なります。

セキュリティ

このユーティリティを使用できるのはシステム管理者のみです。

関連項目

TMNTS、TMNTSFWD_T、TMNTSFWD_Pqmadmin

ntsadmin コマンド

コマンドは、フル ネームか略称で入力できます (略称がある場合は、フル ネームの後にかっこで示されている)。コマンドの後には、適切な引数を入力します。角括弧 [] で示されている引数はオプションです。中かっこ {} で示されている引数は、相互に排他的なオプションの選択を示します。各コマンドには、次のオプションがあります。

オプション
定義
[ -i identifier ]
指定された場合は、identifier と一致するサブスクリプションを識別します。
[ -n name ]
指定された場合は、name と一致するサブスクリプション名のサブスクリプションのみを識別します。空の文字列と一致する名前を指定するには (つまり名前のないサブスクリプション)、空の文字列を引用符 (“”) で囲みます。

注意 : このオプションではワイルドカード文字 (*) がサポートされていないので、名前はサブスクリプション名と正確に一致しなければなりません。

[ -t ]
指定された場合は、QoS が一時的のサブスクリプションのみを示します。
[ -p ]
指定された場合は、QoS が永続的のサブスクリプションのみを示します。

ntsadmin コマンドを次に示します。

subscriptions (sub) [{-i identifier |-n name |-t | -p}]

サブスクリプション データベースにあるサブスクリプションをリストします。
注意 : subscription コマンドの出力は、冗長モードが有効かどうかによって異なります (verbose コマンドについては後述)。コード リスト 7-11 は、冗長モードが有効な場合と無効な場合の subscription の出力例を示しています。
コード リスト 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}]

on に設定されている場合に入力コマンドラインをエコーします。入力がない場合は、現在の設定が切り替えられ、新しい設定が出力されます。初期設定は off です。

help (h) [{command |all}]

ヘルプ メッセージを出力します。command が指定されている場合は、そのコマンドの略称、引数、および説明が出力されます。all が指定されている場合は、すべてのコマンドの説明が表示されます。引数を省略すると、すべてのコマンドの構文が表示されます。

paginate (page) [{off |on}]

出力をページ割りします。入力がない場合は、現在の設定が切り替えられ、新しい設定が出力されます。標準入力または標準出力のいずれかが端末デバイスではない場合を除いて初期設定は on です。ページ割りは、標準入力と標準出力が両方とも端末デバイスである場合に限り有効にできます。シェル環境変数 PAGER を使用すると、出力のページングに使用されるデフォルトのコマンドをオーバーライドできます。デフォルトのページング コマンドは、ネイティブのオペレーション システム環境に固有のページャです。たとえば、コマンド pg は UNIX オペレーティング システムのデフォルトです。

verbose (v) [{on | off }]

冗長モードで出力を生成します。オプションが指定されない場合は、現在の設定が切り替えられ、新しい設定が出力されます。初期設定は off です。

! shellcommand

このコマンドを使用すると、シェルにエスケープして shellcommand を実行できます。

!!

このコマンドを使用すると、前回のシェル コマンドを繰り返すことができます。

#[text]

このコマンドを使用すると、行をコメントとして指定できます。

<CR>

このコマンドを使用すると、前回のコマンドを繰り返すことができます。

ntsadmin ユーティリティの使い方

この節では、ntsadmin ユーティリティの使用例を紹介します。

コード リスト 7-12 は、ntsadmin を使用してエラー キューから保留キューにイベントを移動する例を示しています。このタスクは次のように実行されます。

  1. すべてのサブスクリプションで marcello を検索します。
  2. ユニークな subscription_id を使用して、エラー キューにあるイベントの情報を表示します。
  3. エラー キューから保留キューにイベントを移動します。
  4. コード リスト 7-12 エラー キューから保留キューへのイベントの移動
    D:\smith\reg>ntsadmin
    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.
    Oracle Tuxedo 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 を使用してサブスクリプションを削除し、イベントをパージする例を示しています。

コード リスト 7-13 サブスクリプションの削除
> 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 は、特定サブスクリプションの保留イベントを調べる方法を示しています。

コード リスト 7-14 保留イベントのチェック
> pevt -n marcello
ID Name Count
-- ---- -----
1000000003 marcello 1

 


ノーティフィケーション サーバ

この節では、次のサーバについて説明します。

ノーティフィケーション サービスでは、次の Oracle Tuxedo システム サーバも使用されます。これらのサーバの説明については、『Oracle Tuxedo のファイル形式とデータ記述方法』を参照してください。

 


TMNTS

概要

サブスクリプションおよびイベントのポストの要求を処理します。

構文

TMNTS SRVGRP=”identifier” SRVID=”number”
[CLOPT=”[-A] [servopts options]
[--[-S
queuespace]”]

説明

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 サーバもシステムの作動前に起動する必要があります。

*SERVERS
TMNTS SRVGRP = NTS_GRP  SRVID = 3 
CLOPT = "-A -- -s TMNTSQS"

関連項目

TMSYSEVT(5)TMUSREVT(5)TMQUEUE(5)TMQFORWARD(5)TMNTSFWD_PTMNTSFWD_T(5)UBBCONFIG(5)

 


TMNTSFWD_T

概要

イベントを一時的なサブスクライバに転送します。

構文

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_PUBBCONFIG(5)。「一時的なサブスクリプションの IPC キュースペース」も参照してください。

 


TMNTSFWD_P

概要

イベントを永続的なサブスクライバに転送します。

概要

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)TMNTSTMNTSFWD_Tservopts(5)UBBCONFIG(5)


  ページの先頭       前  次