![]() |
![]() |
|
|
Introductory サンプル・アプリケーションのビルド
ここでは、次の内容について説明します。
概要
Introductory サンプル・アプリケーションでは、ニュースのレポータが記事をポストし、ニュースのサブスクライバがその記事を消費するニュース閲覧環境をシミュレートします。
Introductory サンプル・アプリケーションは、2 つのインプリメンテーションが用意されています。1 つは BEA シンプル・イベント・アプリケーション・プログラミング・インターフェイス (API) が使用される C++ プログラミング言語のインプリメンテーション、もう 1 つは CosNotification サービス API が使用される Java のインプリメンテーションです。
Introductory サンプル・アプリケーションは、Reporter と Subscriber の 2 つのアプリケーションとノーティフィケーション・サービスで構成されます。Reporter アプリケーションは、ユーザにニュース記事の入力を要求し、そのニュース記事を BEA Tuxedo CORBA ノーティフィケーション・サービスにイベントとしてポストするクライアント・アプリケーションをインプリメントします。Subscriber アプリケーションは、イベントをサブスクライブおよびアンサブスクライブするときにはクライアントとして機能し、イベントを受信するときにはサーバとして機能する共同クライアント/サーバ・アプリケーションをインプリメントします。イベントを受信するために、サブスクライバではノーティフィケーション・サービスによってイベント配信が必要なときに呼び出されるコールバック・オブジェクトをインプリメントします。
Introductory サンプル・アプリケーションは、ノーティフィケーション・サービスの最もシンプルな使い方を示します。このサンプル・アプリケーションでは、BEA シンプル・イベント API、CosNotification API、一時的なサブスクリプション、および一時的なオブジェクト・リファレンスの使い方が例示されます。永続的なサブスクリプションまたはデータのフィルタ処理の使い方は示されません。永続的なサブスクリプションおよびデータのフィルタ処理が使用されるサンプル・アプリケーションについては、Advanced サンプル・アプリケーションのビルドを参照してください。
この Introductory サンプル・アプリケーションでは、次の 2 つの実行可能ファイルが提供されます (図 5-1 を参照)。
図5-1 Introductory サンプル・アプリケーションの構成要素
イベント・ポスト元 (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 サンプル・アプリケーションをビルドして実行するには、次の手順を行う必要があります。
"TUXDIR"
環境変数と "JAVA_HOME"
環境変数が適切なディレクトリ・パスに
設定されていることを確認します。
注記 "JAVA_HOME"
環境変数は、Java アプリケーションの場合のみ必要となります。
make
ファイルがパスに含まれているようにします。
Microsoft Windows の場合は、nmake
ファイルがパスに含まれているように
します。
これらの手順は、次の節でさらに詳しく説明されます。
環境変数の設定を確認する
Introductory サンプル・アプリケーションをビルドして実行する前に、システムで TUXDIR
環境変数が設定されていることを確認する必要があります。ほとんどの場合、この環境変数はインストールの過程で設定されます。しかし、正確な情報が反映されているかどうかを確認することが必要です。
表 5-1 は、Introductory サンプル・アプリケーションを実行するために必要な環境変数のリストです。
インストール時に定義された環境変数の情報が正しいかどうかを確認するには、次の手順を行います。
Windows
コントロール・パネルが表示されます。
[システムのプロパティ] ウィンドウが表示されます。
[詳細] ページが表示されます。
TUXDIR および JAVA_HOME
の設定を確認します。
UNIX
ksh prompt>printenv TUXDIR
ksh prompt>printenv JAVA_HOME
設定を変更するには、次の手順を行います。
Windows
UNIX
ksh prompt>export TUXDIR=
directorypath
ksh prompt>export JAVA_HOME=
directorypath
または
csh> setenv TUXDIR=
directorypath
csh> setenv JAVA_HOME=
directorypath
Introductory サンプル・アプリケーションのファイルを作業ディレクトリにコピーする
Introductory サンプル・アプリケーションのファイルと common ディレクトリのファイルをローカル・マシンの作業ディレクトリにコピーする必要があります。
注記 アプリケーション・ディレクトリと common ディレクトリは同じ親ディレクトリにコピーしなければなりません。
ファイルは、次のディレクトリに配置されています。
Windows
C++ の Introductory サンプルdrive:
\tuxdir
\samples
\corba
\notification
\introductory_simple_cxx
drive:
\tuxdir
\samples
\corba
\notification
\common
Java の Introductory サンプルdrive:
\tuxdir
\samples
\corba
\notification
\introductory_cos_java
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
Java の Introductory サンプル/usr/local/tuxdir
/samples/corba/notification/
introductory_simple_cxx/usr/local/tuxdir
/samples/corba/notification/common
表 5-2 と 表 5-4 のファイルは、BEA シンプル・イベント API を使用してインプリメントされる C++ Introductory サンプル・アプリケーションをビルドして実行するために使用します。表 5-3 と 表 5-4 のファイルは、CosNotification API を使用してインプリメントされる Java Introductory サンプル・アプリケーションをビルドして実行するために使用します。
表 5-4 は、Introductory サンプル・アプリケーションで使用されるほかのファイルのリストです。
Introductory サンプル・アプリケーションのファイルの保護属性を変更する
BEA Tuxedo CORBA ソフトウェアのインストール時に、サンプル・アプリケーションのファイルは読み取り専用に設定されます。Introductory サンプル・アプリケーションのファイルを編集またはビルドするには、作業ディレクトリにコピーしたファイルの保護属性を次のように変更する必要があります。
Windows
cd
)。
prompt>attrib -r
drive:
\workdirectory
\*.*
UNIX
prompt>/bin/ksh
ksh prompt>chmod u+w /
workdirectory
/*.*
UNIX システムでは、次のように setenv.ksh
のパーミッションを変更して実行可能にすることも必要です。
ksh prompt>chmod +x setenv.ksh
環境を設定する
環境を設定するには、次のコマンドを入力します。
Windows
prompt>.
\setenv.com
UNIX
ksh prompt>. ./setenv.ksh
Introductory サンプル・アプリケーションをビルドする
makefile を実行するには、make
コマンドを使用します。makefile は、Microsoft Windows および UNIX の両方でサンプル・アプリケーションをビルドするために使用します。UNIX では、make
を使用します。Microsoft Windows では、nmake
を使用します。
makefile の概要
makefile では、次の手順が自動的に行われます。
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 を実行する
makefile
を実行する前に、次の確認作業を行う必要があります。
nmake
がマシンのパスに含まれていることを確認します。make
がマシンのパスに含まれていることを確認します。Introductory サンプル・アプリケーションをビルドするには、make
コマンドを次のように入力します。
Windows
nmake -f makefile.nt
UNIX
make -f makefile.mk
Introductory サンプル・アプリケーションを起動する
Introductory サンプル・アプリケーションを起動するには、次のコマンドを入力します。
prompt>tmboot -y
このコマンドでは、次のサーバ・プロセスが開始されます。
TMSUSREVT
ノーティフィケーション・サービスで使用される、BEA Tuxedo システムに付属の EventBroker サーバ
TMNTS
サブスクリプションおよびイベントのポストの要求を処理する BEA Tuxedo ノーティフィケーション・サービス・サーバ
TMNTSFWD_T
一時的なサブスクリプションのあるサブスクライバにイベントを転送する BEA Tuxedo ノーティフィケーション・サービス・サーバ
ISL
IIOP リスナ/ハンドラ・プロセス
C++ の場合: prompt>is_subscriber
Microsoft Windows 上の Java の場合: prompt>java %IC_SUBSCRIBER%
UNIX 上の Java の場合: prompt>java $IC_SUBSCRIBER
Subscriber をもう 1 つ起動するには、別のウィンドウを開き、ディレクトリを作業ディレクトリに変更して (cd
)、環境変数を設定し (setenv.cmd
または setenv.ksh
を実行)、プラットフォームに適した起動コマンドを入力します。
C++ の場合: prompt>is_reporter
Microsoft Windows 上の Java の場合: prompt>java %IC_REPORTER%
UNIX 上の Java の場合: prompt>java $IC_REPORTER
Reporter をもう 1 つ起動するには、別のウィンドウを開き、ディレクトリを作業ディレクトリに変更して (cd
)、環境変数を設定し (setenv.cmd
または setenv.ksh
を実行)、プラットフォームに適した起動コマンドを入力します。
Introductory サンプル・アプリケーションの使い方
Introductory サンプル・アプリケーションを使用するには、Subscriber アプリケーションを使用してイベントをサブスクライブし、Reporter アプリケーションを使用してイベントをポストする必要があります。サブスクライブは、各イベントをポストする前に行う必要があります。そうしないと、イベントは失われます。
注記 Subscriber アプリケーションは、イベントを 1 つ受信した後にシャットダウンされます。
Subscriber アプリケーションを使用したイベントのサブスクライブ
次の手順を行います。
prompt>is_subscriber
)、次の
プロンプトが表示されます。
Name?
(スペースなしで名前を入力する)Category (or all)?
(ニュース・カテゴリまたは「all」を入力する)
ニュースのカテゴリとしては任意の文字列を入力できます。つまり、ニュース・カテゴリの決まったリストは存在しません。ただし、Reporter アプリケーションを使用してイベントをポストするときには、必ず、ニュース・カテゴリに同じ文字列を使用してください。
注記 Reporter アプリケーションを使用してイベントをポストする前に、必ず Subscriber アプリケーションを使用してイベントをサブスクライブする必要があります。そうしないと、イベントは失われます。
Reporter アプリケーションを使用したイベントのポスト
次の手順を行います。
prompt> is_reporter
)、次のプロ
ンプトが表示されます。
(r) Report news
(e) Exit
Option?
r
を入力します。次のプロンプトが表示されます。
Category?
ニュース・カテゴリを入力すると、次のプロンプトが表示されます。
Enter story (terminate with '.')
.
」) のみを入力して改行します。
この記事とカテゴリが一致するサブスクライバが記事を受信して出力します。記事を受信すると、サブスクライバは自動的にシャットダウンされます。
(e)
オプションを選択します。
注記 Subscriber アプリケーションは、イベントを 1 つ受信した後にシャットダウンされます。したがって、Reporter アプリケーションを使用してイベントをポストする前に、必ず Subscriber アプリケーションを使用してイベントをサブスクライブする必要があります。そうしないと、イベントは失われます。
システムのシャットダウンとディレクトリのクリーン・アップ
次の手順を行います。
注記 Reporter プロセスと Subscriber プロセスが停止していることを確認してください。
prompt>tmshutdown -y
Windows
prompt>nmake -f makefile.nt clean
UNIX
prompt>make -f makefile.mk clean
![]() |
![]() |
![]() |
|
Copyright © 2001, BEA Systems, Inc. All rights reserved.
|