注: | 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_cxx
drive:\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サンプル・アプリケーションを起動するには、次のコマンドを入力します。
このコマンドを入力すると、次のサーバー・プロセスが開始されます。
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プロセスが停止していることを確認してください。 |