注: | 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相互運用性がサブスクライバ・アプリケーションで使用されている場合は、次の手順を実行して、サブスクリプションでデータのフィルタリングを使用する必要があります。
リスト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");
// 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フィールド表定義ファイルを示しています。
*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 = 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"
コールバック・オブジェクトのオブジェクト参照のホストおよびポート要件は、次のとおりです。
ポート番号は、動的な範囲ではなくポート番号のユーザーの範囲から指定できます。ユーザー範囲からポート番号を割り当てることで、共同クライアント/サーバー・アプリケーションが使用するポートの競合を防ぐことができます。
ホストとポートの設定に使用する方法は、使用するプログラミング言語によって異なります。
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
ディスク上にデバイスを作成する方法の詳細は、『ATMI /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を参照)。
キュー・スペースの作成の詳細は、『ATMI /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
キューの作成の詳細は、『ATMI /Qコンポーネントの使用』を参照してください。
Microsoft Windowsシステム向けのOracle Tuxedoソフトウェアには、製品と一緒にインストールされるプロセス間通信サブシステムのOracle Tuxedo IPC Helper (TUXIPC)が同梱されています。IPC Helperは、ほとんどのマシンでインストール時の設定で実行されますが、コントロール・パネル・アプレットにある「IPCリソース」ページを使用すると、TUXIPCサブシステムを調整してパフォーマンスを最大限に高めることができます。
IPCコントロール・パネルの「IPCリソース」ページを表示するには、次の手順を実行します。
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
Oracle Tuxedoシステムが提供するサーバーで、tppost(3)
からのイベント・レポート・メッセージ・バッファを処理し、それらにフィルタを適用して転送するイベント・ブローカとして動作します。(必須)
TMNTS
サブスクリプションおよびイベントのポストのリクエストを処理するOracle Tuxedo通知サービス・サーバー(必須)
TMNTSFWD_T
一時的なサブスクリプションのサブスクライバに一時的なイベントを転送するOracle Tuxedo通知サービス・サーバー(一時的なサブスクリプションで必須)
永続的なサブスクリプションのあるサブスクライバに永続的なイベントを転送するOracle Tuxedo通知サービス・サーバー。サブスクライバに配信できないイベントはエラー・キューに送信されます。(永続的なサブスクリプションで必須)
イベント・キューを管理するOracle Tuxedoサーバー。(永続的なサブスクリプションで必須)
永続的なサブスクライバに転送できるように、イベントを通知サービスTMNTSFWD_P
サーバーに転送するOracle Tuxedoサーバー。(永続的なサブスクリプションで必須)
ISL
Oracle Tuxedo IIOPサーバー・リスナー/ハンドラ・プロセス。(イベントのポスト元とサブスクライバがリモートの場合、つまりローカル・ドメインの外部にある場合は必須)
リスト7-9に示すUBBCONFIG
ファイルは、通知サービスのIntroductoryサンプル・アプリケーションのものです。Introductoryサンプル・アプリケーションでは、一時的なサブスクリプションのみをサポートし、永続的なサブスクリプションやデータのフィルタリングはサポートしません。
# 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サンプル・アプリケーションでは、一時的および永続的なサブスクリプション、およびデータのフィルタリングをサポートします。
# This UBBCONFIG file supports transient and persistent
*RESOURCES
# subscriptions and data filtering.
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
通知サービス・アプリケーションをデプロイしたら、次の管理タスクを継続的に実行する必要があります。
複数のEventBrokerを構成する場合は、通知サービスのサブスクリプション・データベースを同期する必要があります。同期プロセスでは時間を要し(イベント配信に影響する場合がある)、ネットワーク・トラフィックが増加するため、イベントのトラフィックが確保されている場合以外は、複数のEventBrokerを構成しないでください。
複数のEventBrokerを構成する場合は、TMUSREVTサーバーで-P
オプションを使用して、データベースの同期に必要な時間を設定できます。このオプションの設定方法の詳細は、『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』のTMUSREVT(5)
を参照してください。
注: | データベースの同期に必要な時間は、サブスクライバがサブスクライブしてからイベントを受信するまでの所用時間に影響します。また、サブスクライバがアンサブスクライブしてからイベントの受信が停止されるまでの所用時間にも影響します。 |
サブスクリプションは、(1)サブスクライバが永続的なサブスクリプションを作成して、アンサブスクライブせずに停止してから、再起動することなく通知サービスに再接続しなかった場合、(2)どのイベントとも一致しないサブスクリプションをサブスクライバが作成した場合にデッド状態になります。サブスクライバは、永続的なサブスクリプションを作成してから、アンサブスクライブせずに停止できますが、定期的に再接続して蓄積されたイベントを取得しないとエラーになります。通知サービスは、永続的なサブスクリプションと一致するイベントの配信を定期的に試行するため、このようなイベントはサブスクライバが接続されていない間に蓄積され、キュー・スペースを消費して、システム・リソースが無駄になります。
どのイベントとも一致しないサブスクリプションは意味をなさないため、作成しないようにしてください。また、ポストされた各イベントは各サブスクリプションと照合する必要があるため、サブスクリプションではシステム・リソースを消費します。
表7-2のntsadmin
コマンドを使用すると、すべてのサブスクリプションを表示して、各サブスクリプションの保留キューとエラー・キューに現在どの程度のイベントが入っているかを確認できます。また、ntsadmin
コマンドを使用してサブスクリプションを削除したり、エラー・キューのイベントを保留キューに移動できます。ntsadmin
ユーティリティの詳細は、「ntsadmin」を参照してください。
デッド・サブスクリプションを自動的に検出する方法はありませんが、ntsadmin
ユーティリティを使用すると、サブスクリプションがデッド状態になった時点や、デッド状態になっているかどうかを確認できます。
キューは、固定量のスペースを割り当てて作成されます。このスペースは、キューにイベントが蓄積されるにつれて消費されます。キューが一杯になると、それ以降にイベントをキューに登録しようとしても失敗します。
キューの使用率をモニターするには、qmadmin
またはntsadmin
を使用します(『Oracle Tuxedoコマンド・リファレンス』のqmadmin(1)
を参照)。
保留イベントを保持するためにキュー・スペースが作成されたときに、キュー・スペースで保持可能なイベントの最大数が指定されています。たとえば、Advancedサンプル・アプリケーションで、TMNTSQS
キュー・スペースのイベントの最大数は200に設定されています(「イベント・キューの作成」を参照)。キュー・スペースの容量がわかっていれば、ntsadmin
pendevents
コマンドを使用して、イベント・キュー内で保留中のイベントの数を確認できます。イベント・キューが一杯か一杯に近い場合は、イベントの最大数の設定を増やすか、イベント・キューの数を増やしてください。
注: | キューが容量一杯近くになった場合に警告を生成するには、qmadmin qcreate コマンドでしきい値オプション(cmd )を使用します。このコマンドの詳細は、『Oracle Tuxedoコマンド・リファレンス』のqmadmin (1)に関する項を参照してください。 |
ntsadmin
コマンドのrmerrevents
とrmpendevents
を使用すると、保留キューまたはエラー・キューからイベンをパージできます。
警告: | キューからイベントが削除されると、復元できなくなります。イベントは完全に削除され、サブスクライブするアプリケーションがイベント受信することはありません。 |
イベントの配信が事前設定の試行回数実行されると、イベントはエラー・キューに移動します。エラー・キューでは、管理者はそのイベントをシステムからパージするか、エラー・キューから保留キューに戻す必要があります。イベントのパージについては、前述の項を参照してください。
イベントをエラー・キューから保留キューに戻す場合は、イベント配信の再開をシステムにリクエストしていることになります。イベント配信の失敗はシステム・リソースを消費するため、配信の障害となった状況が修正されないかぎり、この操作を実行しないでください。イベントを保留キューに戻すために、ntsadmin
retryerrevents
コマンドが用意されています。
この項では、ntsadmin
ユーティリティについて説明します。
Oracle Tuxedo CORBA通知サービスの管理コマンド・インタープリタ。
通知サービスには、CORBA通知サービス・アプリケーションで次のタスクを実行するためのコマンドを備える管理コマンド・インタープリタのntsadmin
があります。
注: | アプリケーションに一時的なサブスクリプションしかない場合、ntsadmin を入力してプログラムを起動すると、永続的なサブスクリプション用のコマンドが無効になります。 |
注: | ntsadmin を使用するには、通知サービスを実行している必要があります。 |
コマンド・プロンプトでq
(終了)を入力すると、ntsadmin
プログラムを終了できます。[Break]キーを押すと、コマンドからの出力が終了し、新しいコマンドの入力が求められます。
ntsadmin
からの出力は、使用しているページ割りコマンドに従ってページ別に表示されます(paginate
コマンドを参照)。
注: | The subscription コマンドの出力は、verbose コマンドの設定によって異なります。 |
このユーティリティを使用できるのは、システム管理者のみです。
TMNTS、TMNTSFWD_T、TMNTSFWD_P
、qmadmin
コマンドの形式は、完全名でも省略形でも(省略形がある場合は、完全名の後にカッコで示されます)入力することができ、該当する引数がその後に付きます。大カッコ[ ]で囲まれている引数は省略可能で、中カッコ{ }で囲まれている引数は、相互に排他的な選択肢を示します。各コマンドのオプションは次のとおりです。
指定されている場合は、nameと一致するサブスクリプション名のサブスクリプションのみを識別します。空の文字列と一致する名前を指定するには(名前のないサブスクリプション)、空の文字列を引用符("")で囲みます。
|
|||
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
です。ページ割りは、標準入力と標準出力が両方とも端末デバイスである場合にかぎりonになります。シェル環境変数PAGER
を使用すると、ページ別表示出力に使用されるデフォルトのコマンドをオーバーライドできます。デフォルトのページ別表示コマンドは、ネイティブのオペレーティング・システム環境に固有のコマンドです(たとえば、コマンドpg
は、UNIXシステム・オペレーティング・システムのデフォルトです)。
verbose (v) [{on | off }]
!
shellcommand
!!
#[text]
<CR>
この項では、ntsadmin
ユーティリティの使用例について説明します。
リスト7-12は、ntsadmin
を使用して、イベントをエラー・キューから保留キューに戻す例を示しています。実行する手順は次のとおりです。
marcello
を検索します。subscription_id
を使用して、エラー・キューにあるイベントに関する情報を表示します。D:\smith\reg>ntsadmin
Oracle 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システム・サーバーも使用します。これらのサーバーの詳細は、『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』を参照してください。
サブスクリプションおよびイベントのポストのリクエストを処理します。
TMNTS SRVGRP=”identifier” SRVID=”number”
queuespace
[CLOPT=”[-A] [servopts options]
[--[-S]”]
TMNTS
は、サブスクリプションおよびイベントのポストのすべてのリクエストを処理するOracle Tuxedo付属のサーバーです。
-S
queuespace
注: | 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_P
、TMNTSFWD_T(5)
、UBBCONFIG(5)
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_P
、UBBCONFIG(5)
。「一時的なサブスクリプションのIPCキュー・スペース」も参照。
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)
、TMNTS
、TMNTSFWD_T
、servopts(5)
、UBBCONFIG(5)