CORBA通知サービスの使用

     前  次    新規ウィンドウで目次を開く  新規ウィンドウで索引を開く  PDFとして表示 - 新規ウィンドウ  Adobe Readerを取得 - 新規ウィンドウ
コンテンツはここから始まります

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太字のコードは、イベント・ポスト元アプリケーションでデータのフィルタ処理がどのように実装されるかを示します。イベントを受信するのは、名前/値のペアのbillingpatient_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");
// Specify an additional filter, based upon name and value
// for this event.
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);
// Push the structured event onto the channel.
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ページはqspaceのオーバーヘッド用)。
    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

ディスク上にデバイスを作成する方法の詳細は、『ATMI /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のディスク・ページを許可する必要があります(500 * 2)。また、qspaceのオーバーヘッドのために50のディスク・ページを許可する必要があり、qspaceのサイズは1050ディスク・ページに設定されます。さらに、デバイスのオーバーヘッドのために50のディスク・ページが必要になるため、デバイス・サイズは1100のディスク・ページになります。これはcrdlコマンドを使用して設定します(リスト 7-6を参照)。

キュー・スペースの作成の詳細は、『ATMI /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

キューの作成の詳細は、『ATMI /Qコンポーネントの使用』を参照してください。

Microsoft WindowsでのIPCパラメータの設定

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

IPCコントロール・パネルの「IPCリソース」ページを表示するには、次の手順を実行します。

  1. 「スタート」→「設定」→「コントロール パネル」をクリックします。 Microsoft Windowsのコントロール・パネルが表示されます(図7-1)。
  2. 図7-1 Microsoft Windowsのコントロール・パネル


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

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


    Microsoft Windows向けOracle Tuxedoソフトウェアの「IPCリソース」コントロール・パネル

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

  1. 「現在のリソースのデフォルト」ボックスで、「デフォルトのIPC設定を使用する」チェック・ボックスをクリックして選択を解除します。
  2. 挿入ボックスをクリックします。
  3. マシンの名前を入力して、[Enter]を押します。
  4. 設定するIPCリソースの横にあるフィールドをクリックして、必要な値を入力し、「適用」をクリックします。「適用」をクリックすると、変更内容がレジストリ表に保存されます。変更内容を有効にするには、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ファイルに含める必要のあるサーバーとプロセス
一時的なサブスクリプション
TMUSREVTTMNTSTMNTSFWD_T
永続的なサブスクリプション
TMUSREVTTMNTSTMNTSFWD_PTMQUEUE, TMQFORWARD

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

通知サービス・アプリケーションを開発する場合は、UBBCONFIGファイルのSERVERSセクションで、次のタイプのサーバーを設定できます。

リスト7-9に示すUBBCONFIGファイルは、通知サービスのIntroductoryサンプル・アプリケーションのものです。Introductoryサンプル・アプリケーションでは、一時的なサブスクリプションのみをサポートし、永続的なサブスクリプションやデータのフィルタ処理はサポートしません。

リスト7-9 IntroductoryサンプルのUBBCONFIGファイル
# This UBBCONFIG file supports transient subscriptions only; it does
# not persistent subscriptions or data filtering.
*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"
#----------------------------------------------------------------
# Since we are using transient events, the group need not be
# transactional.
*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"
# Start the notification service server.
#
TMNTS
    SRVGRP = SYS_GRP
    SRVID = 6
# Start the Notification Service transient event forwarder.
#
TMNTSFWD_T
    SRVGRP = SYS_GRP
    SRVID = 7
# Start the ISL with -O since we are using callbacks to clients.
ISL
    SRVGRP = SYS_GRP
    SRVID = 8
    CLOPT = "-A -- -O -n //BEANIE:2359"
#---------------------------------------------------------------
*SERVICES

リスト7-10に示すサンプル・コードは、通知サービスのAdvancedサンプル・アプリケーションのものです。Advancedサンプル・アプリケーションでは、一時的および永続的なサブスクリプション、およびデータのフィルタ処理をサポートします。

リスト7-10 AdvancedサンプルのUBBCONFIGファイル
# This UBBCONFIG file supports transient and persistent 
# subscriptions and data filtering.
*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"
#
# Since we are using persistent events, we need a transaction log.
#
    TLOGDEVICE = "D:\tuxdir\EVENTS~1\ADVANC~1\TLOG"
    TLOGSIZE = 10
#---------------------------------------------------------------
*GROUPS
    SYS_GRP
    LMID = SITE1
    GRPNO = 1
# Create a null transactional group for the notification service
# servers.
#
NTS_GRP
    LMID = SITE1
    GRPNO = 2
    TMSNAME = TMS
    TMSCOUNT = 2
# Since we are using persistent events, we need a persistent queue
# create a queue transactional group for the queue servers.
#
QUE_GRP
    LMID = SITE1
    GRPNO = 3
    TMSNAME = TMS_QM
    TMSCOUNT = 2
#
# Make the queue group manage the QUE space we create.
# The name of the queue space specified here as TMNTSQS must match # the name of the queue space you created.
#
   OPENINFO = "TUXEDO/QM:D:\tuxdir\EVENTS~1\ADVANC~1\QUE;TMNTSQS"
#---------------------------------------------------------------
*SERVERS
    DEFAULT:
    CLOPT = "-A"
#
# Start the queue server.
# The name of the queue space specified in the -s option of
# CLOPT must match the name of the queue space you created.
#
TMQUEUE
    SRVGRP = QUE_GRP
    SRVID = 1
    CLOPT = "-s TMNTSQS:TMQUEUE -- "
#
# Start the queue forwarder, have it forward events to the
# notification service persistent forwarder.
#
TMQFORWARD
    SRVGRP = QUE_GRP
    SRVID = 2
    CLOPT = "-- -i 2 -q TMNTSFWD_P"
    TMSYSEVT
    SRVGRP = NTS_GRP
    SRVID = 1
#
# Start the user EventBroker. Pass in the environment file
# so that the user EventBroker can find the "Story" fml field
# definition. This allows the user EventBroker to perform
# data filtering.
#
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"
#
# Start the notification service server. Pass in the environment
# file so that the notification server can perform data filtering.
# The -s option must be specified since we are using
# persistent events. Note that the -s option specifies the name
# of the queue space as TMNTSQS. This name must match the name
# of the queue space you created.
#
TMNTS
    SRVGRP = NTS_GRP
    SRVID = 3
    ENVFILE = "D:\tuxdir\EVENTS~1\ADVANC~1\envfile"
    CLOPT = "-A -- -s TMNTSQS"
#
# Start the notification service transient event forwarder.
# Pass in the environment file so that the server can perform
# data filtering.
#
TMNTSFWD_T
    SRVGRP = NTS_GRP
    SRVID = 4
    ENVFILE = "D:\tuxdir\EVENTS~1\ADVANC~1\envfile"
#
# Start the notification service persistent event forwarder.
# Pass in the environment file so that the server can perform
# data filtering.
#
TMNTSFWD_P
    SRVGRP = NTS_GRP
    SRVID = 5
    ENVFILE = "D:\tuxdir\EVENTS~1\ADVANC~1\envfile"
#
# Start the ISL with -O since we're using callbacks to clients.
#
ISL
    SRVGRP = SYS_GRP
    SRVID = 4
    CLOPT = "-A -- -O -n //BEANIE:2363"
#---------------------------------------------------------------
*SERVICES

 


通知サービスの管理

通知サービス・アプリケーションをデプロイしたら、次の管理タスクを継続的に実行する必要があります。

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

データベースの同期

複数のEventBrokerを構成する場合は、通知サービスのサブスクリプション・データベースを同期する必要があります。同期プロセスでは時間を要し(イベント配信に影響する場合がある)、ネットワーク・トラフィックが増加するため、イベントのトラフィックが確保されている場合以外は、複数のEventBrokerを構成しないでください。

複数のEventBrokerを構成する場合は、TMUSREVTサーバーで-Pオプションを使用して、データベースの同期に必要な時間を設定できます。このオプションの設定方法の詳細は、『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』TMUSREVT(5)に関する項を参照してください。

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

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

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

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

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

表7-2 ntsadminコマンドの概要
コマンド
使用方法
subscriptions
サブスクリプション・データベースのサブスクリプションをリストします。
rmsubscriptions
サブスクリプション・データベースのサブスクリプションを削除します。
pendevents
保留イベント・キューのイベントに関する情報をリストします。(永続的なサブスクリプションの場合のみ。)
rmpendevents
保留イベント・キューのイベントを削除します。(永続的なサブスクリプションの場合のみ。)
errevents
イベント・エラー・キューのイベントをリストします。(永続的なサブスクリプションの場合のみ。)
rmerrevents
イベント・エラー・キューのイベントを削除します。(永続的なサブスクリプションの場合のみ。)

デッド・サブスクリプションを自動的に検出する方法はありませんが、ntsadminユーティリティを使用すると、サブスクリプションがデッド状態になった時点や、デッド状態になっているかどうかを確認できます。

キュー使用率のモニター

キューは、固定量のスペースを割り当てて作成されます。このスペースは、キューにイベントが蓄積されるにつれて消費されます。キューが一杯になると、それ以降にイベントをキューに登録しようとしても失敗します。

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

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

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

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

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

警告: キューからイベントが削除されると、復元できなくなります。イベントは完全に削除され、サブスクライブするアプリケーションがイベント受信することはありません。

エラー・キューの管理

イベントの配信が事前設定の試行回数実行されると、イベントはエラー・キューに移動します。エラー・キューでは、管理者はそのイベントをシステムからパージするか、エラー・キューから保留キューに戻す必要があります。イベントのパージについては、前述の項を参照してください。

イベントをエラー・キューから保留キューに戻す場合は、イベント配信の再開をシステムにリクエストしていることになります。イベント配信の失敗はシステム・リソースを消費するため、配信の障害となった状況が修正されないかぎり、この操作を実行しないでください。イベントを保留キューに戻すために、ntsadmin retryerreventsコマンドが用意されています。

 


通知サービスの管理ユーティリティとコマンド

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

ntsadminユーティリティ

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

 


ntsadmin

概要

Oracle Tuxedo CORBA通知サービスの管理コマンド・インタープリタ。

構文

ntsadmin

説明

通知サービスには、CORBA通知サービス・アプリケーションで次のタスクを実行するためのコマンドを備える管理コマンド・インタープリタのntsadminがあります。

注意: アプリケーションに一時的なサブスクリプションしかない場合、ntsadminを入力してプログラムを起動すると、永続的なサブスクリプション用のコマンドが無効になります。
注意: ntsadminを使用するには、通知サービスを実行している必要があります。

コマンド・プロンプトでq(終了)を入力すると、ntsadminプログラムを終了できます。[Break]キーを押すと、コマンドからの出力が終了し、新しいコマンドの入力が求められます。

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

注意: The 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です。ページ割りは、標準入力と標準出力が両方とも端末デバイスである場合にかぎり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システム・サーバーも使用します。これらのサーバーの詳細は、『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』を参照してください。

 


TMNTS

概要

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

構文

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

説明

TMNTSは、サブスクリプションおよびイベントのポストのすべてのリクエストを処理するOracle Tuxedo付属のサーバーです。

パラメータ

-S queuespace

使用するキュー・スペースの名前。このキュー・スペースには、TMNTSFWD_PTMNTSFWD_Eの2つのキューを含める必要があります。このオプションは、永続的なサブスクリプションでのみ必須です。
注意: QoSがPersistentのサブスクリプションを使用する場合は、システムが稼働する前にキュー・スペース、イベントを保持するためのキュー、およびエラー・キューを作成する必要があります。キュー・スペースの名前は、TMNTSサーバーのCLOPT -S queuespaceパラメータで指定したqueuespace名と一致する必要があります。イベント・キューの名前はTMNTSFWD_Pにする必要があります。エラー・キューの名前はTMNTSFWD_Eにする必要があります。

信頼性と可用性を高めるために、複数のTMNTSサーバーを起動できます。

イベントがトランザクションのコンテキストでポストされる場合、TMNTSサーバーはトランザクション・グループに属している必要があります。

相互運用性

TMNTSは、Oracle WebLogic Enterpriseバージョン5.0以降またはOracle Tuxedo 8.0以降で実行する必要があります。

ノート

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は、Oracle WebLogic Enterpriseバージョン5.0以降またはOracle Tuxedo 8.0以降で実行する必要があります。

ノート

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] [--”]

説明

MNTSFWD_Pは、指定したQoSが永続的なサブスクライバにイベントを転送するOracle Tuxedo付属のサーバーです。イベントの配信に関連付けられているトランザクション・コンテキストはありません。

信頼性と可用性を高めるために、複数のTMNTSFWD_Pサーバーを起動できます。

相互運用性

TMNTSは、Oracle WebLogic Enterpriseバージョン5.0以降またはOracle Tuxedo 8.0以降で実行する必要があります。

ノート

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)


  先頭に戻る       前  次