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

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

Introductory サンプル アプリケーションのビルド

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

注意 : 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 に関する技術的なサポートやマニュアルは提供していません。

 


概要

Introductory サンプル アプリケーションでは、ニュースのレポータが記事をポストし、ニュースのサブスクライバがその記事を消費するニュース閲覧環境をシミュレートします。

Introductory サンプル アプリケーションでは、Oracle シンプル イベント アプリケーション プログラミング インタフェース (API) を使用する C++ プログラミング言語の実装が用意されています。Introductory サンプル アプリケーションは、Reporter と Subscriber の 2 つのアプリケーションとノーティフィケーション サービスで構成されます。Reporter アプリケーションは、ユーザにニュース記事の入力を要求し、そのニュース記事を Oracle Tuxedo CORBA ノーティフィケーション サービスにイベントとしてポストするクライアント アプリケーションを実装します。Subscriber アプリケーションは、イベントをサブスクライブおよびアンサブスクライブするときにはクライアントとして機能し、イベントを受信するときにはサーバとして機能する共同クライアント/サーバ アプリケーションを実装します。イベントを受信するために、サブスクライバではノーティフィケーション サービスによってイベント配信が必要なときに呼び出されるコールバック オブジェクトを実装します。

Introductory サンプル アプリケーションは、ノーティフィケーション サービスの最もシンプルな使い方を示します。このサンプル アプリケーションでは、Oracle シンプル イベント API、CosNotification API、一時的なサブスクリプション、および一時的なオブジェクト参照の使い方が例示されます。永続的なサブスクリプションまたはデータのフィルタ処理の使い方は示されません。永続的なサブスクリプションおよびデータのフィルタ処理が使用されるサンプル アプリケーションについては、「Advanced サンプル アプリケーションのビルド」を参照してください。

この Introductory サンプル アプリケーションでは、次の 2 つの実行可能ファイルが提供されます (図 5-1 を参照)。

イベント ポスト元 (Reporter アプリケーション) では、構造化イベントの domain_nametype_name、および filterable_data フィールドを使用してイベントを作成します。ドメイン名は業界を定義します。このアプリケーションでは、domain_name は「News」に設定します。type_name はその業界でのイベントの種類を定義し、ニュース記事のカテゴリに設定されます (「Sports」など)。この値はアプリケーションのユーザが指定します。filterable_data フィールドでは、「Story」というフィールドを追加します。このフィールドは、ポストされるニュース記事のテキストを格納します。このテキストもアプリケーションのユーザが指定します。

Subscriber アプリケーションでは、構造化イベントの domain_name フィールドと type_name フィールドを使用してノーティフィケーション サービスのサブスクリプションを作成します。サブスクリプションでは、domain_name が「News」の内容の固定文字列として定義されます。実行時に、Subscriber アプリケーションではユーザに対し「ニュース カテゴリ」をクエリし、その入力を使用してサブスクリプションの type_name フィールドを定義します。当然、両アプリケーション (レポータとサブスクライバ) のユーザが協力し、サブスクリプションの「ニュース カテゴリ」文字列がイベントと一致するようにしなければなりません。そうしないと、サブスクライバにイベントは配信されません。サブスクリプションでは、記事の本文が文字列であり、その記事が構造化イベントの filterable_data フィールドの最初の名前/値ペアにあるものと想定され、filterable_data フィールドのチェックが行われることはありません。

イベントをポストするために、Reporter アプリケーションでは push_structured_event メソッドを使用してニュース イベントをノーティフィケーション サービスにプッシュします。各イベントについて、Reporter アプリケーションでは「ニュース カテゴリ」 (「Sports」など) と記事 (複数行のテキスト文字列) をユーザに問い合わせます。

Subscriber アプリケーションでは、ノーティフィケーション サービスを呼び出してニュース イベントをサブスクライブします。各サブスクリプションについて、Subscriber アプリケーションでは「ニュース カテゴリ」 (「Sports」など) をユーザに問い合わせます。Subscriber アプリケーションでは、ニュース イベントを受信して処理するためのコールバック オブジェクトも (NewsConsumer_i サーバント クラスを通じて) 実装します。Subscriber がサブスクライブするときには、このコールバック オブジェクトのオブジェクト参照がノーティフィケーション サービスに渡されます。一致するイベントが発生すると、つまりサブスクリプションとニュース カテゴリが一致するイベントが Reporter によってポストされると、ノーティフィケーション サービスではコールバック オブジェクトの push_structured_event メソッドを呼び出してサブスクライバのコールバック オブジェクトにイベントを配信します。このメソッドでは、イベントが出力され、ノーティフィケーション サービスの unsubscribe メソッドを呼び出してサブスクリプションが取り消され、Subscriber が停止されます。簡略化のため、push_structured_event メソッドでは domain_nametype_namelength、および name フィールドが一致し、記事が value フィールドにあるものと想定されます。

注意 : 「ニュース カテゴリ」は、Reporter のユーザと Subscriber のユーザが合意した文字列です。このサンプルには固定のカテゴリはありません。したがって、Reporter のユーザと Subscriber のユーザが両者とも、カテゴリが要求されたときに (大文字と小文字の区別およびスペースの有無を含めて) 同じ文字列を入力しなければなりません。

このサンプルを実行するには、Reporter アプリケーションと Subscriber アプリケーションを少なくとも 1 つずつ起動する必要があります (それぞれ複数を実行することも可能)。Reporter によってポストされたイベントは、(「ニュース カテゴリ」に基づいて) 一致するすべてのサブスクライバに配信されます。

また、サブスクライバは必ずイベントをポストする前に起動してください。そうしないと、イベントが失われます。

 


Introductory サンプル アプリケーションのビルドと実行

Introductory サンプル アプリケーションをビルドして実行するには、次の手順を行う必要があります。

  1. "TUXDIR" 環境変数が適切なディレクトリ パスに設定されていることを確認します。
  2. “JAVA_HOME” の設定を解除します。
  3. Introductory サンプル アプリケーションのファイルを作業ディレクトリにコピーします。
  4. ファイルの保護属性を変更して、書き込みと実行を可能にします。
  5. UNIX の場合は、make ファイルがパスに含まれているようにします。Microsoft Windows の場合は、nmake ファイルがパスに含まれているようにします。
  6. アプリケーションの環境変数を設定します。
  7. サンプルをビルドします。
  8. システムを起動します。
  9. Subscriber アプリケーションと Reporter アプリケーションを実行します。
  10. システムを停止します。
  11. ディレクトリを元の状態に戻します。

これらの手順は、次の節でさらに詳しく説明されます。

環境変数の設定を確認する

Introductory サンプル アプリケーションをビルドして実行する前に、システムで TUXDIR 環境変数が設定されていることを確認する必要があります。ほとんどの場合、この環境変数はインストール手順の一環として設定済みです。ただし、環境変数をチェックして、正しい情報を反映していることを確認する必要があります。

表 5-1 は、Introductory サンプル アプリケーションを実行するために必要な環境変数のリストです。

表 5-1 Introductory サンプル アプリケーションで必須の環境変数
環境変数
説明
TUXDIR
Oracle Tuxedo ソフトウェアをインストールしたディレクトリ パス。次に例を示します。
Windows
TUXDIR=c:\tuxdir
UNIX
TUXDIR=/usr/local/tuxdir

インストール中に定義された環境変数の情報が正しいことを確認するには、以下の手順に従います。

Windows

  1. [スタート] メニューの、[設定] をポイントします。
  2. [設定] メニューから、[コントロール パネル] をクリックします。
  3. [コントロール パネル] が表示されます。

  4. [システム] アイコンをクリックします。
  5. [システムのプロパティ] ウィンドウが表示されます。

  6. [詳細] タブの [環境変数] をクリックします。
  7. [環境変数] ページが表示されます。

  8. TUXDIR の設定を確認します。

UNIX

ksh prompt>printenv TUXDIR

設定を変更するには、以下の手順に従います。

Windows

  1. [システムのプロパティ] ウィンドウの [詳細] ページで、設定を変更する環境変数をクリックします。
  2. 値フィールドに環境変数の正しい情報を入力します。
  3. [OK] をクリックして変更を保存します。

UNIX

ksh prompt>export TUXDIR=directorypath

または

csh> setenv TUXDIR=directorypath

Introductory サンプル アプリケーションのファイルを作業ディレクトリにコピーする

Introductory サンプル アプリケーションのファイルと common ディレクトリのファイルをローカル マシンの作業ディレクトリにコピーする必要があります。

注意 : アプリケーション ディレクトリと common ディレクトリは同じ親ディレクトリにコピーしなければなりません。

ファイルは、次のディレクトリに配置されています。

Windows

C++ の Introductory サンプル
drive:\tuxdir\samples\corba\notification\introductory_simple_cxx
drive:\tuxdir\samples\corba\notification\common

UNIX

C++ の Introductory サンプル
/usr/local/tuxdir/samples/corba/notification/
introductory_simple_cxx
/usr/local/tuxdir/samples/corba/notification/common

表 5-2表 5-3 のファイルは、Oracle シンプル イベント API を使用して実装される C++ Introductory サンプル アプリケーションをビルドして実行するために使用します。

表 5-2 introductory_sample_c++ ディレクトリのファイル
ファイル
説明
Readme.txt
Introductory サンプル アプリケーションの説明と、環境の設定およびアプリケーションのビルドと実行の手順が記述されています。
setenv.cmd
Microsoft Windows システムの環境を設定します。
setenv.ksh
UNIX システムの環境を設定します。
makefile.nt
Microsoft Windows システムの makefile。
makefile.mk
UNIX システムの makefile。
makefile.inc
makefile.nt ファイルと makefile.mk ファイルで使用される共通の makefile。
Reporter.cpp
レポータのコード。
Subscriber.cpp
サブスクライバのコード。
NewsConsumer_i.h および NewsConsumer.cpp
ニュース イベントを受信するためにサブスクライバで使用されるコールバック サーバント クラス (Subscriber アプリケーション用)。

表 5-3 は、Introductory サンプル アプリケーションで使用されるほかのファイルのリストです。

表 5-3 Introductory サンプル アプリケーションで使用されるほかのファイル
ファイル
説明
次のファイルは、common ディレクトリに配置されています。
common.nt
Microsoft Windows システムの makefile シンボル。
common.mk
UNIX システムの makefile シンボル。
introductory.inc
管理対象の makefile。
ex.h
例外を出力するユーティリティ (C++ のみ)。
client_ex.h
例外を処理するクライアント ユーティリティ (C++ のみ)。
次のファイルは、\tuxdir\include ディレクトリに配置されています。
CosEventComm.idl
CosEventComm モジュールを宣言する OMG IDL コード。
CosNotification.idl
CosNotification モジュールを宣言する OMG IDL コード。
CosNotifyComm.idl
CosNotifyComm モジュールを宣言する OMG IDL コード。
Tobj_Events.idl
Tobj_Events モジュールを宣言する OMG IDL コード。
Tobj_SimpleEvents.idl
Tobj_SimpleEvents モジュールを宣言する OMG IDL コード。

注意 : このファイルは、Oracle シンプル イベント API を使用して開発されたアプリケーションでのみ必要です。

次のファイルは、CosNotification サービス API を使用して開発されたアプリケーションでのみ必要です。
CosEventChannelAdmin.idl
CosEventChannelAdmin モジュールを宣言する OMG IDL コード。
CosNotifyFilter.idl
CosNotifyFilter モジュールを宣言する OMG IDL コード。
CosNotifyChannelAdmin.idl
CosNotifyChannelAdmin モジュールを宣言する OMG IDL コード。
Tobj_Notification.idl
Tobj_Notification モジュールを宣言する OMG IDL コード。

Introductory サンプル アプリケーションのファイルに対する保護属性を変更する

Oracle Tuxedo CORBA ソフトウェアのインストール時に、サンプル アプリケーションのファイルは読み取り専用に設定されます。Introductory サンプル アプリケーションのファイルを編集またはビルドするには、作業ディレクトリにコピーしたファイルの保護属性を次のように変更する必要があります。

Windows

  1. DOS ウィンドウで、ディレクトリを作業ディレクトリに変更します (cd)。
  2. prompt>attrib -r drive:\workdirectory\*.*

UNIX

  1. ディレクトリを作業ディレクトリに変更します (cd)。
  2. prompt>/bin/ksh
  3. ksh prompt>chmod u+w /workdirectory/*.*

UNIX システムでは、次のように setenv.ksh のパーミッションを変更して実行可能にすることも必要です。

ksh prompt>chmod +x setenv.ksh

環境を設定する

環境を設定するには、次のコマンドを入力します。

Windows

prompt>.\setenv.cmd

UNIX

ksh prompt>../setenv.ksh

Introductory サンプル アプリケーションをビルドする

makefile を実行するには、make コマンドを使用します。makefile は、Microsoft Windows および UNIX の両方でサンプル アプリケーションをビルドするために使用します。UNIX では、make を使用します。Microsoft Windows では、nmake を使用します。

makefile の概要

makefile では、次の手順が自動的に行われます。

  1. 環境設定コマンド (setenv.cmd) が実行済みであることを確認します。環境変数が設定されていない場合は、エラー メッセージを画面に出力して終了します。
  2. common.nt コマンド ファイル (Microsoft Windows) または common.mk コマンド ファイル (UNIX) をインクルードします。このファイルでは、サンプルで使用される makefile シンボルが定義されます。それらのシンボルにより、UNIX および Microsoft Windows の makefile でビルド規則をプラットフォームに依存しない makefile に委譲することができます。
  3. makefile.inc コマンド ファイルをインクルードします。このファイルでは、is_reporter および is_subscriber の実行可能ファイルがビルドされ、不要なファイルとディレクトリがクリーンアップされます。
  4. introductory.inc コマンド ファイルをインクルードします。このファイルでは、UBBCONFIG ファイルが作成され、tmloadcf -y ubb コマンドを実行して TUXCONFIG ファイルが作成されます。これはプラットフォームに依存しない makefile の一部であり、Introductory サンプル アプリケーションで共通の管理上のビルド規則を定義します。

makefile を実行する

makefile を実行する前に、次の確認作業を行う必要があります。

Introductory サンプル アプリケーションをビルドするには、make コマンドを次のように入力します。

Windows

nmake -f makefile.nt

UNIX

make -f makefile.mk

Introductory サンプル アプリケーションを起動する

Introductory サンプル アプリケーションを起動するには、次のコマンドを入力します。

  1. Oracle Tuxedo システムを起動するには、次のように入力します。
  2. prompt>tmboot -y

    このコマンドを入力すると、次のサーバ プロセスが開始されます。

    • TMSUSREVT
    • ノーティフィケーション サービスで使用される、Oracle Tuxedo システムに付属の EventBroker サーバ

    • TMNTS
    • サブスクリプションおよびイベントのポストの要求を処理する Oracle Tuxedo ノーティフィケーション サービス サーバ

    • TMNTSFWD_T
    • 一時的なサブスクリプションのあるサブスクライバにイベントを転送する Oracle Tuxedo ノーティフィケーション サービス サーバ

    • ISL
    • IIOP リスナ/ハンドラ プロセス。

  3. Subscriber アプリケーションを起動するには、次のように入力します。
  4. C++ の場合 : prompt>is_subscriber

    Subscriber をもう 1 つ起動するには、別のウィンドウを開き、ディレクトリを作業ディレクトリに変更して (cd)、環境変数を設定し (setenv.cmd または setenv.ksh を実行)、プラットフォームに適した起動コマンドを入力します。

  5. Reporter アプリケーションを起動するには、新たにウィンドウを開いて次のように入力します。
  6. C++ の場合 : prompt>is_reporter

    Reporter をもう 1 つ起動するには、別のウィンドウを開き、ディレクトリを作業ディレクトリに変更して (cd)、環境変数を設定し (setenv.cmd または setenv.ksh を実行)、プラットフォームに適した起動コマンドを入力します。

Introductory サンプル アプリケーションの使い方

Introductory サンプル アプリケーションを使用するには、Subscriber アプリケーションを使用してイベントをサブスクライブし、Reporter アプリケーションを使用してイベントをポストする必要があります。サブスクライブは、各イベントをポストする前に行う必要があります。そうしないと、イベントは失われます。

注意 : Subscriber アプリケーションは、イベントを 1 つ受信した後に停止されます。

Subscriber アプリケーションを使用したイベントのサブスクライブ

次の手順を行います。

  1. Subscriber アプリケーションを起動すると (prompt>is_subscriber)、次のプロンプトが表示されます。
  2. Name? (スペースなしで名前を入力する)
    Category (or all)?(ニュース カテゴリまたは「all」を入力する)

    ニュースのカテゴリとしては任意の文字列を入力できます。つまり、ニュース カテゴリの決まったリストは存在しません。ただし、Reporter アプリケーションを使用してイベントをポストするときには、必ず、ニュース カテゴリに同じ文字列を使用してください。

  3. Subscriber アプリケーションは、サブスクリプションを作成し、イベント受信の準備ができた時点で「Ready」を出力します。イベントを 1 つ受信すると、Subscriber は停止されます。
  4. 注意 : Reporter アプリケーションを使用してイベントをポストする前に、必ず Subscriber アプリケーションを使用してイベントをサブスクライブする必要があります。そうしないと、イベントは失われます。

Reporter アプリケーションを使用したイベントのポスト

次の手順を行います。

  1. Reporter アプリケーションを起動すると (prompt> is_reporter)、次のプロンプトが表示されます。
  2. (r) Report news
    (e) Exit

    Option?

  3. ニュースを報告するには r を入力します。次のプロンプトが表示されます。
  4. Category?

  5. ニュース カテゴリを入力します。ニュース カテゴリは、Subscriber アプリケーションで入力したカテゴリと (スペースの有無や大文字と小文字の区別を含めて) まったく同じに入力する必要があります。
  6. ニュース カテゴリを入力すると、次のプロンプトが表示されます。

    Enter story (terminate with '.')

  7. 記事を入力します。複数行にまたがってもかまいません。記事を終わらせるには、1 行にピリオド (「.」) のみを入力して改行します。
  8. この記事とカテゴリが一致するサブスクライバが記事を受信して出力します。記事を受信すると、サブスクライバは自動的に停止されます。

  9. 続けてニュース記事を送信および受信するには、新たにサブスクライバを起動して、また別の記事を報告します。ニュースの報告が終了したら、終了 (e) オプションを選択します。
  10. 注意 : Subscriber アプリケーションは、イベントを 1 つ受信した後に停止されます。したがって、Reporter アプリケーションを使用してイベントをポストする前に、必ず Subscriber アプリケーションを使用してイベントをサブスクライブする必要があります。そうしないと、イベントは失われます。

システムの停止とディレクトリのクリーンアップ

次の手順を行います。

注意 : Reporter プロセスと Subscriber プロセスが停止していることを確認してください。
  1. システムを停止するには、任意のウィンドウで次のように入力します。
  2. prompt>tmshutdown -y

  3. ディレクトリを元の状態に復元するには、任意のウィンドウで次のように入力します。
  4. Windows

    prompt>nmake -f makefile.nt clean

    UNIX

    prompt>make -f makefile.mk clean


  ページの先頭       前  次