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、一時的なサブスクリプション、および一時的なオブジェクト参照の使い方が例示されます。永続的なサブスクリプションまたはデータのフィルタリングの使い方は示されません。永続的なサブスクリプションおよびデータのフィルタリングが使用されるサンプル・アプリケーションについては、
第6章「Advancedサンプル・アプリケーションのビルド」を参照してください。
このIntroductoryサンプル・アプリケーションでは、次の2つの実行可能ファイルが提供されます(
図5-1を参照)。
•
|
通知サービスにイベントをポストするReporterアプリケーション。コールバック機能を持たないクライアントです。
|
•
|
通知サービスをサブスクライブし、イベントを受信するSubscriberアプリケーション。サブスクライバは、イベントをサブスクライブするときにはクライアントとして機能し、イベントを受信するときにはサーバーとして機能する共同クライアント/サーバーです。
|
イベント・ポスト元(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サンプル・アプリケーションのビルドと実行
Introductoryサンプル・アプリケーションをビルドして実行するには、次の手順を行う必要があります。
1.
|
"TUXDIR"環境変数が適切なディレクトリ・パスに設定されていることを確認します。
|
3.
|
Introductoryサンプル・アプリケーションのファイルを作業ディレクトリにコピーします。
|
4.
|
ファイルの保護属性を変更して、書き込みと実行を可能にします。
|
5.
|
UNIXの場合は、 makeファイルがパスに含まれているようにします。Microsoft Windowsの場合は、 nmakeファイルがパスに含まれているようにします。
|
9.
|
SubscriberアプリケーションとReporterアプリケーションを実行します。
|
これらの手順は、次の項でさらに詳しく説明されます。
Introductoryサンプル・アプリケーションをビルドして実行する前に、システムで
TUXDIR環境変数が設定されていることを確認する必要があります。ほとんどの場合、この環境変数はインストール手順の一環として設定済です。ただし、環境変数をチェックして、正しい情報を反映していることを確認する必要があります。
表5-1は、Introductoryサンプル・アプリケーションを実行するために必要な環境変数のリストです。
表5-1
Introductoryサンプル・アプリケーションで必須の環境変数
|
|
|
Oracle Tuxedoソフトウェアをインストールしたディレクトリ・パス。例:
|
インストール中に定義された環境変数の情報が正しいことを確認するには、以下の手順に従います。
1.
|
「スタート」メニューの、「設定」をポイントします。
|
2.
|
「設定」メニューから、「コントロール・パネル」をクリックします。
|
「システムのプロパティ」ウィンドウが表示されます。
ksh prompt>printenv TUXDIR
1.
|
「システムのプロパティ」ウィンドウの「詳細」ページで、設定を変更する環境変数をクリックします。
|
ksh prompt>export TUXDIR=directorypath
csh> setenv TUXDIR=directorypath
Introductoryサンプル・アプリケーションのファイルを作業ディレクトリにコピーする
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-2
introductory_sample_c++ディレクトリのファイル
|
|
|
Introductoryサンプル・アプリケーションの説明と、環境の設定およびアプリケーションのビルドと実行の手順が記述されています。
|
|
Microsoft Windowsシステムの環境を設定します。
|
|
|
|
Microsoft Windowsシステムのmakefile。
|
|
|
|
makefile.ntファイルと makefile.mkファイルで使用される共通のmakefile。
|
|
|
|
|
NewsConsumer_i.hおよびNewsConsumer.cpp
|
ニュース・イベントを受信するためにサブスクライバで使用されるコールバック・サーバーント・クラス(Subscriberアプリケーション用。)
|
表5-3は、Introductoryサンプル・アプリケーションで使用される他のファイルのリストです。
表5-3
Introductoryサンプル・アプリケーションで使用される他のファイル
|
|
次のファイルは、commonディレクトリに配置されています。
|
|
Microsoft Windowsシステムのmakefileシンボル。
|
|
|
|
|
|
|
|
例外を処理するクライアント・ユーティリティ(C++のみ。)
|
次のファイルは、\tuxdir\includeディレクトリに配置されています。
|
|
CosEventCommモジュールを宣言するOMG IDLコード。
|
|
CosNotificationモジュールを宣言するOMG IDLコード。
|
|
CosNotifyCommモジュールを宣言するOMG IDLコード。
|
|
Tobj_Eventsモジュールを宣言するOMG IDLコード。
|
|
Tobj_SimpleEventsモジュールを宣言するOMG IDLコード。
注意:
|
このファイルは、Oracleシンプル・イベントAPIを使用して開発されたアプリケーションでのみ必要です。
|
|
次のファイルは、CosNotificationサービスAPIを使用して開発されたアプリケーションでのみ必要です。
|
|
CosEventChannelAdminモジュールを宣言するOMG IDLコード。
|
|
CosNotifyFilterモジュールを宣言するOMG IDLコード。
|
CosNotifyChannelAdmin.idl
|
CosNotifyChannelAdminモジュールを宣言するOMG IDLコード。
|
|
Tobj_Notificationモジュールを宣言するOMG IDLコード。
|
Introductoryサンプル・アプリケーションのファイルに対する保護属性を変更する
Oracle Tuxedo CORBAソフトウェアのインストール時に、サンプル・アプリケーションのファイルは読取り専用に設定されます。Introductoryサンプル・アプリケーションのファイルを編集またはビルドするには、作業ディレクトリにコピーしたファイルの保護属性を次のように変更する必要があります。
1.
|
DOSウィンドウで、ディレクトリを作業ディレクトリに変更します( cd)。
|
2.
|
prompt>attrib -r drive:¥ workdirectory¥*.*
|
1.
|
ディレクトリを作業ディレクトリに変更します(cd)。
|
3.
|
ksh prompt>chmod u+w /workdirectory/*.*
|
UNIXシステムでは、次のように
setenv.kshのパーミッションを変更して実行可能にすることも必要です。
ksh prompt>chmod +x setenv.ksh
ksh prompt>. ./setenv.ksh
Introductoryサンプル・アプリケーションのビルド
makefileを実行するには、
makeコマンドを使用します。makefileは、Microsoft WindowsおよびUNIXの両方でサンプル・アプリケーションをビルドするために使用します。UNIXでは、
makeを使用します。Microsoft Windowsでは、
nmakeを使用します。
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を実行する前に、次の確認作業を行う必要があります。
•
|
アプリケーションのビルドおよび実行を行う適切な管理権限があること。
|
•
|
Microsoft Windowsでは、 nmakeがマシンのパスに含まれていることを確認します。
|
•
|
UNIXでは、 makeがマシンのパスに含まれていることを確認します。
|
Introductoryサンプル・アプリケーションをビルドするには、
makeコマンドを次のように入力します。
Introductoryサンプル・アプリケーションを起動する
Introductoryサンプル・アプリケーションを起動するには、次のコマンドを入力します。
1.
|
Oracle Tuxedoシステムを起動するには、次のように入力します。
|
このコマンドを入力すると、次のサーバー・プロセスが開始されます。
通知サービスで使用される、Oracle Tuxedoシステムに付属のEventBrokerサーバー
サブスクリプションおよびイベントのポストのリクエストを処理するOracle Tuxedo通知サービス・サーバー
一時的なサブスクリプションのあるサブスクライバにイベントを転送するOracle Tuxedo通知サービス・サーバー
2.
|
Subscriberアプリケーションを起動するには、次のように入力します。
|
C++の場合:
prompt>is_subscriber
Subscriberをもう1つ起動するには、別のウィンドウを開き、ディレクトリを作業ディレクトリに変更して(
cd)、環境変数を設定し(
setenv.cmdまたは
setenv.kshを実行)、プラットフォームに適した起動コマンドを入力します。
3.
|
Reporterアプリケーションを起動するには、新たにウィンドウを開いて次のように入力します。
|
C++の場合:
prompt>is_reporter
Reporterをもう1つ起動するには、別のウィンドウを開き、ディレクトリを作業ディレクトリに変更して(
cd)、環境変数を設定し(
setenv.cmdまたは
setenv.kshを実行)、プラットフォームに適した起動コマンドを入力します。
Introductoryサンプル・アプリケーションの使い方
Introductoryサンプル・アプリケーションを使用するには、Subscriberアプリケーションを使用してイベントをサブスクライブし、Reporterアプリケーションを使用してイベントをポストする必要があります。サブスクライブは、各イベントをポストする前に行う必要があります。そうしないと、イベントは失われます。
注意:
|
Subscriberアプリケーションは、イベントを1つ受信した後に停止されます。
|
Subscriberアプリケーションを使用したイベントのサブスクライブ
1.
|
Subscriberアプリケーションを起動すると( prompt>is_subscriber)、次のプロンプトが表示されます。
|
Name?(Enter a name (without spaces).)
Category (or all)?(必要なニュース・カテゴリまたは「all」を入力します。)
ニュースのカテゴリとしては任意の文字列を入力できます。つまり、ニュース・カテゴリの決まったリストは存在しません。ただし、Reporterアプリケーションを使用してイベントをポストするときには、必ず、ニュース・カテゴリに同じ文字列を使用してください。
2.
|
Subscriberアプリケーションは、サブスクリプションを作成し、イベント受信の準備ができた時点で「Ready」を出力します。イベントを1つ受信すると、Subscriberは停止されます。
|
注意:
|
Reporterアプリケーションを使用してイベントをポストする前に、必ずSubscriberアプリケーションを使用してイベントをサブスクライブする必要があります。そうしないと、イベントは失われます。
|
Reporterアプリケーションを使用したイベントのポスト
1.
|
Reporterアプリケーションを起動すると( prompt> is_reporter)、次のプロンプトが表示されます。
|
2.
|
ニュースを報告するには rを入力します。次のプロンプトが表示されます。
|
3.
|
ニュース・カテゴリを入力します。ニュース・カテゴリは、Subscriberアプリケーションで入力したカテゴリと(スペースの有無や大文字と小文字の区別を含めて)まったく同じに入力する必要があります。
|
ニュース・カテゴリを入力すると、次のプロンプトが表示されます。
Enter story (terminate with '.')
4.
|
記事を入力します。複数行にまたがってもかまいません。記事を終わらせるには、1行にピリオド( 「.」)のみを入力して改行します。
|
この記事とカテゴリが一致するサブスクライバが記事を受信して出力します。記事を受信すると、サブスクライバは自動的に停止されます。
5.
|
続けてニュース記事を送信および受信するには、新たにサブスクライバを起動して、また別の記事を報告します。ニュースの報告が終了したら、終了 (e)オプションを選択します。
|
注意:
|
Subscriberアプリケーションは、イベントを1つ受信した後に停止されます。したがって、Reporterアプリケーションを使用してイベントをポストする前に、必ずSubscriberアプリケーションを使用してイベントをサブスクライブする必要があります。そうしないと、イベントは失われます。
|
注意:
|
ReporterプロセスとSubscriberプロセスが停止していることを確認してください。
|
1.
|
システムを停止するには、任意のウィンドウで次のように入力します。
|
2.
|
ディレクトリを元の状態に復元するには、任意のウィンドウで次のように入力します。
|
prompt>nmake -f makefile.nt clean
prompt>make -f makefile.mk clean