|
| 注意 : | 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_name、type_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_name、type_name、length、および name フィールドが一致し、記事が value フィールドにあるものと想定されます。
| 注意 : | 「ニュース カテゴリ」は、Reporter のユーザと Subscriber のユーザが合意した文字列です。このサンプルには固定のカテゴリはありません。したがって、Reporter のユーザと Subscriber のユーザが両者とも、カテゴリが要求されたときに (大文字と小文字の区別およびスペースの有無を含めて) 同じ文字列を入力しなければなりません。 |
このサンプルを実行するには、Reporter アプリケーションと Subscriber アプリケーションを少なくとも 1 つずつ起動する必要があります (それぞれ複数を実行することも可能)。Reporter によってポストされたイベントは、(「ニュース カテゴリ」に基づいて) 一致するすべてのサブスクライバに配信されます。
また、サブスクライバは必ずイベントをポストする前に起動してください。そうしないと、イベントが失われます。
Introductory サンプル アプリケーションをビルドして実行するには、次の手順を行う必要があります。
"TUXDIR" 環境変数が適切なディレクトリ パスに設定されていることを確認します。 “JAVA_HOME” の設定を解除します。make ファイルがパスに含まれているようにします。Microsoft Windows の場合は、nmake ファイルがパスに含まれているようにします。
Introductory サンプル アプリケーションをビルドして実行する前に、システムで TUXDIR 環境変数が設定されていることを確認する必要があります。ほとんどの場合、この環境変数はインストール手順の一環として設定済みです。ただし、環境変数をチェックして、正しい情報を反映していることを確認する必要があります。
表 5-1 は、Introductory サンプル アプリケーションを実行するために必要な環境変数のリストです。
インストール中に定義された環境変数の情報が正しいことを確認するには、以下の手順に従います。
ksh prompt>export TUXDIR=directorypath
csh> setenv TUXDIR=directorypath
Introductory サンプル アプリケーションのファイルと common ディレクトリのファイルをローカル マシンの作業ディレクトリにコピーする必要があります。
| 注意 : | アプリケーション ディレクトリと common ディレクトリは同じ親ディレクトリにコピーしなければなりません。 |
C++ の Introductory サンプルdrive:\tuxdir\samples\corba\notification\introductory_simple_cxxdrive:\tuxdir\samples\corba\notification\common
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-3 は、Introductory サンプル アプリケーションで使用されるほかのファイルのリストです。
|
|||
Oracle Tuxedo CORBA ソフトウェアのインストール時に、サンプル アプリケーションのファイルは読み取り専用に設定されます。Introductory サンプル アプリケーションのファイルを編集またはビルドするには、作業ディレクトリにコピーしたファイルの保護属性を次のように変更する必要があります。
UNIX システムでは、次のように setenv.ksh のパーミッションを変更して実行可能にすることも必要です。
ksh prompt>chmod +x setenv.ksh
makefile を実行するには、make コマンドを使用します。makefile は、Microsoft Windows および UNIX の両方でサンプル アプリケーションをビルドするために使用します。UNIX では、make を使用します。Microsoft Windows では、nmake を使用します。
setenv.cmd) が実行済みであることを確認します。環境変数が設定されていない場合は、エラー メッセージを画面に出力して終了します。common.nt コマンド ファイル (Microsoft Windows) または common.mk コマンド ファイル (UNIX) をインクルードします。このファイルでは、サンプルで使用される makefile シンボルが定義されます。それらのシンボルにより、UNIX および Microsoft Windows の makefile でビルド規則をプラットフォームに依存しない makefile に委譲することができます。makefile.inc コマンド ファイルをインクルードします。このファイルでは、is_reporter および is_subscriber の実行可能ファイルがビルドされ、不要なファイルとディレクトリがクリーンアップされます。introductory.inc コマンド ファイルをインクルードします。このファイルでは、UBBCONFIG ファイルが作成され、tmloadcf -y ubb コマンドを実行して TUXCONFIG ファイルが作成されます。これはプラットフォームに依存しない makefile の一部であり、Introductory サンプル アプリケーションで共通の管理上のビルド規則を定義します。
makefile を実行する前に、次の確認作業を行う必要があります。
Introductory サンプル アプリケーションをビルドするには、make コマンドを次のように入力します。
Introductory サンプル アプリケーションを起動するには、次のコマンドを入力します。
このコマンドを入力すると、次のサーバ プロセスが開始されます。
C++ の場合 : prompt>is_subscriber
Subscriber をもう 1 つ起動するには、別のウィンドウを開き、ディレクトリを作業ディレクトリに変更して (cd)、環境変数を設定し (setenv.cmd または setenv.ksh を実行)、プラットフォームに適した起動コマンドを入力します。
Reporter をもう 1 つ起動するには、別のウィンドウを開き、ディレクトリを作業ディレクトリに変更して (cd)、環境変数を設定し (setenv.cmd または setenv.ksh を実行)、プラットフォームに適した起動コマンドを入力します。
Introductory サンプル アプリケーションを使用するには、Subscriber アプリケーションを使用してイベントをサブスクライブし、Reporter アプリケーションを使用してイベントをポストする必要があります。サブスクライブは、各イベントをポストする前に行う必要があります。そうしないと、イベントは失われます。
| 注意 : | Subscriber アプリケーションは、イベントを 1 つ受信した後に停止されます。 |
prompt>is_subscriber)、次のプロンプトが表示されます。
Name? (スペースなしで名前を入力する)Category (or all)?(ニュース カテゴリまたは「all」を入力する)
ニュースのカテゴリとしては任意の文字列を入力できます。つまり、ニュース カテゴリの決まったリストは存在しません。ただし、Reporter アプリケーションを使用してイベントをポストするときには、必ず、ニュース カテゴリに同じ文字列を使用してください。
| 注意 : | Reporter アプリケーションを使用してイベントをポストする前に、必ず Subscriber アプリケーションを使用してイベントをサブスクライブする必要があります。そうしないと、イベントは失われます。 |
prompt> is_reporter)、次のプロンプトが表示されます。r を入力します。次のプロンプトが表示されます。
ニュース カテゴリを入力すると、次のプロンプトが表示されます。
Enter story (terminate with '.')
.」) のみを入力して改行します。
この記事とカテゴリが一致するサブスクライバが記事を受信して出力します。記事を受信すると、サブスクライバは自動的に停止されます。
(e) オプションを選択します。| 注意 : | Subscriber アプリケーションは、イベントを 1 つ受信した後に停止されます。したがって、Reporter アプリケーションを使用してイベントをポストする前に、必ず Subscriber アプリケーションを使用してイベントをサブスクライブする必要があります。そうしないと、イベントは失われます。 |
| 注意 : | Reporter プロセスと Subscriber プロセスが停止していることを確認してください。 |
|