CORBA通知サービスの使用

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

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


  先頭に戻る       前  次