bea ホーム | 製品 | dev2dev | support | askBEA
BEA Logo Tuxedo
 ドキュメントのダウンロード   サイトマップ   用語集 
検索
0

Tuxedo CORBA ノーティフィケーション・サービス

 Previous Next Contents Index View as PDF  

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 を参照)。

イベント・ポスト元 (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" 環境変数と "JAVA_HOME" 環境変数が適切なディレクトリ・パスに設定されていることを確認します。

    注記 "JAVA_HOME" 環境変数は、Java アプリケーションの場合のみ必要となります。

  2. Introductory サンプル・アプリケーションのファイルを作業ディレクトリにコピーします。

  3. ファイルの保護属性を変更して、書き込みと実行を可能にします。

  4. UNIX の場合は、make ファイルがパスに含まれているようにします。Microsoft Windows の場合は、nmake ファイルがパスに含まれているようにします。

  5. アプリケーションの環境変数を設定します。

  6. サンプルをビルドします。

  7. システムを起動します。

  8. Subscriber アプリケーションと Reporter アプリケーションを実行します。

  9. システムをシャットダウンします。

  10. ディレクトリを元の状態に戻します。

これらの手順は、次の節でさらに詳しく説明されます。

環境変数の設定を確認する

Introductory サンプル・アプリケーションをビルドして実行する前に、システムで TUXDIR 環境変数が設定されていることを確認する必要があります。ほとんどの場合、この環境変数はインストール手順の一環として設定済みです。ただし、環境変数をチェックして、正しい情報を反映していることを確認する必要があります。

表 5-1 は、Introductory サンプル・アプリケーションを実行するために必要な環境変数のリストです。

表 5-1 Introductory サンプル・アプリケーションで必須の環境変数

環境変数

説明

TUXDIR

BEA Tuxedo ソフトウェアをインストールしたディレクトリ・パス。たとえば、次のように入力します。

Windows

TUXDIR=c:¥tuxdir

UNIX

TUXDIR=/usr/local/tuxdir

JAVA_HOME (Java アプリケーションのみ)

JDK ソフトウェアをインストールしたディレクトリ・パス。たとえば、次のように入力します。

Windows

JAVA_HOME=c:¥JDK1.2.2

UNIX

JAVA_HOME=/usr/local/JDK1.2.1


 

インストール中に定義された環境変数の情報が正しいことを確認するには、以下の手順に従います。

Windows

  1. [スタート] メニューの、[設定] をポイントします。

  2. [設定] メニューから、[コントロール パネル] をクリックします。

    [コントロール パネル] が表示されます。

  3. [システム] アイコンをクリックします。

    [システムのプロパティ] ウィンドウが表示されます。

  4. [詳細] タブの [環境変数] をクリックします。

    [環境変数] ページが表示されます。

  5. TUXDIR および JAVA_HOME の設定を確認します。

UNIX

ksh prompt>printenv TUXDIR

ksh prompt>printenv JAVA_HOME

設定を変更するには、以下の手順に従います。

Windows

  1. [システムのプロパティ] ウィンドウの [詳細] ページで、設定を変更する環境変数をクリックします。

  2. 値フィールドに環境変数の正しい情報を入力します。

  3. [OK] をクリックして変更を保存します。

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-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_cos_java ディレクトリのファイル

ファイル

説明

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.java

レポータのコード。

Suscriber.java

サブスクライバのコード。

NewsConsumer_i.java

ニュース・イベントを受信するためにサブスクライバで使用されるコールバック・サーバント・クラス (Subscriber アプリケーション用)。


 

表 5-4 は、Introductory サンプル・アプリケーションで使用されるほかのファイルのリストです。


 


 

表 5-4 Introductory サンプル・アプリケーションで使用されるほかのファイル

ファイル

説明

次のファイルは、common ディレクトリに配置されています。

common.nt

Microsoft Windows システムの makefile シンボル。

common.mk

UNIX システムの makefile シンボル。

introductory.inc

管理対象の makefile。

ex.h

例外を出力するユーティリティ (C++ のみ)。

client_ex.h

例外を処理するクライアント・ユーティリティ (C++ のみ)。

ShutdownManager.java

ノーティフィケーション・サービス Java サンプルのメインとサーバントがサーバのシャットダウンを調整するのを支援するクラス。

注記 このファイルは Java アプリケーションでのみ必要です。

次のファイルは、¥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 コード。

注記 このファイルは、BEA シンプル・イベント 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 サンプル・アプリケーションのファイルに対する保護属性を変更する

BEA 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. BEA Tuxedo システムを起動するには、次のように入力します。

    prompt>tmboot -y

    このコマンドを入力すると、次のサーバ・プロセスが開始されます。

  2. Subscriber アプリケーションを起動するには、次のように入力します。

    C++ の場合: prompt>is_subscriber
    Microsoft Windows 上の Java の場合: prompt>java %IC_SUBSCRIBER%
    UNIX 上の Java の場合: prompt>java $IC_SUBSCRIBER

    Subscriber をもう 1 つ起動するには、別のウィンドウを開き、ディレクトリを作業ディレクトリに変更して (cd)、環境変数を設定し (setenv.cmd または setenv.ksh を実行)、プラットフォームに適した起動コマンドを入力します。

  3. Reporter アプリケーションを起動するには、新たにウィンドウを開いて次のように入力します。

    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 アプリケーションを使用したイベントのサブスクライブ

次の手順を行います。

  1. Subscriber アプリケーションを起動すると (prompt>is_subscriber)、次のプロンプトが表示されます。

    Name? (スペースなしで名前を入力する)
    Category (or all)? (ニュース・カテゴリまたは「all」を入力する)

    ニュースのカテゴリとしては任意の文字列を入力できます。つまり、ニュース・カテゴリの決まったリストは存在しません。ただし、Reporter アプリケーションを使用してイベントをポストするときには、必ず、ニュース・カテゴリに同じ文字列を使用してください。

  2. Subscriber アプリケーションは、サブスクリプションを作成し、イベント受信の準備ができた時点で「Ready」を出力します。イベントを 1 つ受信すると、Subscriber はシャットダウンされます。

    注記 Reporter アプリケーションを使用してイベントをポストする前に、必ず Subscriber アプリケーションを使用してイベントをサブスクライブする必要があります。そうしないと、イベントは失われます。

Reporter アプリケーションを使用したイベントのポスト

次の手順を行います。

  1. Reporter アプリケーションを起動すると (prompt> is_reporter)、次のプロンプトが表示されます。

    (r) Report news
    (e) Exit

    Option?

  2. ニュースを報告するには r を入力します。次のプロンプトが表示されます。

    Category?

  3. ニュース・カテゴリを入力します。ニュース・カテゴリは、Subscriber アプリケーションで入力したカテゴリと (スペースの有無や大文字と小文字の区別を含めて) まったく同じに入力する必要があります。

    ニュース・カテゴリを入力すると、次のプロンプトが表示されます。

    Enter story (terminate with '.')

  4. 記事を入力します。複数行にまたがってもかまいません。記事を終わらせるには、1 行にピリオド (「.」) のみを入力して改行します。

    この記事とカテゴリが一致するサブスクライバが記事を受信して出力します。記事を受信すると、サブスクライバは自動的にシャットダウンされます。

  5. 続けてニュース記事を送信および受信するには、新たにサブスクライバを起動して、また別の記事を報告します。ニュースの報告が終了したら、終了 (e) オプションを選択します。

    注記 Subscriber アプリケーションは、イベントを 1 つ受信した後にシャットダウンされます。したがって、Reporter アプリケーションを使用してイベントをポストする前に、必ず Subscriber アプリケーションを使用してイベントをサブスクライブする必要があります。そうしないと、イベントは失われます。

システムのシャットダウンとディレクトリのクリーン・アップ

次の手順を行います。

注記 Reporter プロセスと Subscriber プロセスが停止していることを確認してください。

  • システムをシャットダウンするには、任意のウィンドウで次のように入力します。

    prompt>tmshutdown -y

  • ディレクトリを元の状態に復元するには、任意のウィンドウで次のように入力します。

    Windows

    prompt>nmake -f makefile.nt clean

    UNIX

    prompt>make -f makefile.mk clean

  •  

    Back to Top Previous Next
    Contact e-docsContact BEAwebmasterprivacy