Tuxedo CORBA University サンプル アプリケーション

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

Basic サンプル アプリケーション

ここでは、以下の内容について説明します。

注意 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 に関する技術的なサポートやマニュアルは提供していません。

CORBA アプリケーションに関連する概念、および CORBA アプリケーションの開発プロセスの説明については、『Tuxedo CORBA アプリケーション入門』を参照してください。

 


Basic サンプル アプリケーションのしくみ

基本的なサンプル アプリケーションを使用すると、ユーザは利用可能なコースを閲覧し、選択したコースに関する詳細情報を入手できます。図 3-1 は基本的なサンプル アプリケーションの機能を表しています。

図 3-1 Basic サンプル アプリケーション

Basic サンプル アプリケーション

Basic サンプル アプリケーションでは、次の機能について示します。

 


Basic サンプル アプリケーションの OMG IDL

クライアント アプリケーションとサーバ アプリケーションを作成する最初の手順は、OMG IDL を使用してすべての CORBA インタフェースとそのメソッドを指定することです。Basic サンプル アプリケーションでは、次の CORBA インタフェースを実装します。

インタフェース
説明
オペレーション
RegistrarFactory
Registrar オブジェクトへのオブジェクト参照を作成する。
find_registrar()
Registrar
データベースからコースの情報を取得する。
get_courses_synopsis()
get_courses_details()
CourseSynopsisEnumerator
コース データベースから検索基準に一致するコースの概要を取得し、メモリに読み込む。次に、概要の最初のサブセットを Registrar オブジェクトに返し、Registrar は概要をクライアント アプリケーションに返す。最後に、クライアント アプリケーションが残りの概要を取得できるようにする。
get_next_n()
destroy()

コード リスト 3-1 では、Basic サンプル アプリケーションの CORBA インタフェースを定義した univb.idl ファイルを示します。このファイルのコピーは、Basic サンプル アプリケーションのディレクトリ内にあります。

コード リスト 3-1 Basic サンプル アプリケーションの OMG IDL
module UniversityB
{
   typedef unsigned long CourseNumber;
typedef sequence<CourseNumber> CourseNumberList;
   struct CourseSynopsis
{
CourseNumber course_number;
string title;
};
   typedef sequence<CourseSynopsis> CourseSynopsisList;

interface CourseSynopsisEnumerator
{
CourseSynopsisList get_next_n(
in unsigned long number_to_get,
out unsigned long number_remaining
);
void destroy();
};
   typedef unsigned short Days;
const Days MONDAY = 1;
const Days TUESDAY = 2;
const Days WEDNESDAY = 4;
const Days THURSDAY = 8;
const Days FRIDAY = 16;

struct ClassSchedule
{
Days class_days; // 日のビットマスク
unsigned short start_hour; // 軍用時間による時間
unsigned short duration; // 分
};
   struct CourseDetails
{
CourseNumber course_number;
double cost;
unsigned short number_of_credits;
ClassSchedule class_schedule;
unsigned short number_of_seats;
string title;
string professor;
string description;
};
   typedef sequence<CourseDetails> CourseDetailsList;

interface Registrar
{
CourseSynopsisList
get_courses_synopsis(
in string search_criteria,
in unsigned long number_to_get, // 0 = すべて
out unsigned long number_remaining,
out CourseSynopsisEnumerator rest
);
CourseDetailsList get_courses_details(in CourseNumberList
courses);
   interface RegistrarFactory
{
Registrar find_registrar(
);
};
};

 


クライアント スタブとスケルトンの生成

注意 : University サンプル アプリケーションの CORBA クライアント アプリケーションでは、静的起動を使用しています。動的起動インタフェースの使用例については、『Tuxedo CORBA クライアント アプリケーションの開発方法』を参照してください。

IDL コンパイラでは、OMG IDL で定義されたインタフェース仕様を使用して、クライアント アプリケーションのクライアント スタブおよびサーバ アプリケーションのスケルトンを生成します。クライアント スタブは、すべてのオペレーション呼び出しでクライアント アプリケーションによって使用されます。スケルトンは、CORBA オブジェクトを実装するサーバ アプリケーションを作成するために、記述したコードと共に使用します。クライアント スタブとスケルトンの生成および使用方法については、『Tuxedo CORBA アプリケーション入門』を参照してください。

開発プロセスでは、idl コマンドを使用して、OMG IDL ファイルをコンパイルしたり、クライアント スタブおよびスケルトンを生成します。この作業は、Basic サンプル アプリケーションの makefile で自動化されています。idl コマンドについては、『Tuxedo コマンド リファレンス』を参照してください。

 


クライアント アプリケーションの記述

Oracle Tuxedo の CORBA 環境では、次の 3 種類のクライアント アプリケーションをサポートしています。

開発プロセスでは、以下の処理を行うクライアント アプリケーション コードを記述します。

Basic サンプル アプリケーションには、C++ によるクライアント アプリケーションが用意されています。クライアント アプリケーションの記述方法については、『Tuxedo CORBA アプリケーション入門』および『Tuxedo CORBA クライアント アプリケーションの開発方法』を参照してください。

サーバ アプリケーションの記述

開発プロセスでは、次の内容を記述します。

サンプル アプリケーションには、Server オブジェクトの C++ コード、および University サーバ アプリケーションのメソッド実装が用意されています。

開発プロセスでは、genicf コマンドを使用して実装コンフィグレーション ファイル (ICF) を作成します。その際、ICF ファイルを編集して RegistrarRegistrarFactory、および CourseSynopsisEnumerator オブジェクトのアクティブ化ポリシーとトランザクション ポリシーを定義します。Basic サンプル アプリケーションの場合、RegistrarRegistrarFactory、および CourseSynopsisEnumerator オブジェクトのアクティブ化ポリシーは process、トランザクションポリシーは ignore です。Basic サンプル アプリケーション用の ICF ファイルが用意されています。

サーバ アプリケーションの記述については、『Tuxedo CORBA サーバ アプリケーションの開発方法』を参照してください。

 


Basic サンプル アプリケーションのコンフィグレーション

どの CORBA アプリケーションでも、重要な役割を果たすのが UBBCONFIG ファイルです。管理者が UBBCONFIG ファイルの作成を担当する場合でも、プログラマはこのファイルの存在と使用方法を把握しておくことが重要です。システム管理者がコンフィグレーション ファイルを作成するときは、一連のパラメータを使用して CORBA アプリケーションを記述します。これらのパラメータが Oracle Tuxedo ソフトウェアによって解釈されると、実行可能なアプリケーションが生成されます。

コンフィグレーション ファイルには次の 2 種類があります。

UBBCONFIG ファイルおよび tmloadcf コマンドについては、『Oracle Tuxedo アプリケーションの設定』および『Tuxedo コマンド リファレンス』を参照してください。

 


Basic サンプル アプリケーションのビルド

Basic サンプル アプリケーションをビルドするには、以下の手順に従います。

  1. Basic サンプル アプリケーションのファイルを作業ディレクトリにコピーします。
  2. Basic サンプル アプリケーションのファイルの保護を変更します。
  3. 環境変数を設定します。
  4. University データベースを初期化します。
  5. UBBCONFIG ファイルをロードします。
  6. クライアントおよびサーバ サンプル アプリケーションをビルドします。

以降の節では、上記の各手順について説明します。

注意 : Basic サンプル アプリケーションをビルドまたは実行する前に、「環境設定」の手順を実行しておく必要があります。

Basic サンプル アプリケーションのファイルを作業ディレクトリにコピーする

Basic サンプル アプリケーションの各ファイルは、次のディレクトリにあります。

Windows

drive:\TUXDIR\samples\corba\university\basic

UNIX

/usr/TUXDIR/samples/corba/university/basic

また、utils ディレクトリも作業ディレクトリにコピーする必要があります。utils ディレクトリには、ログ、トレース、および University データベースへのアクセスを設定するファイルが格納されています。

表 3-1 に、Basic サンプル アプリケーションの作成に使用するファイルを示します。

表 3-1 Basic サンプル アプリケーションに含まれるファイル
ファイル
説明
univb.idl
CourseSynopsisEnumeratorRegistrar、および RegistrarFactory インタフェースを宣言する OMG IDL。
univbs.cpp
Basic サンプル アプリケーションの University サーバ アプリケーション用 C++ ソース コード。
univb_i.h
univb_i.cpp
CourseSynopsisEnumeratorRegistrar、および RegistrarFactory インタフェースのメソッド実装用 C++ ソース コード。
univbc.cpp
Basic サンプル アプリケーションの CORBA C++ クライアント アプリケーション用 C++ ソース コード。
univb_utils.h
univb_utils.cpp
CORBA C++ クライアント アプリケーションのデータベース アクセス関数を定義するファイル。
univb.icf
Basic サンプル アプリケーションの実装コンフィグレーション ファイル (ICF)。
setenvb.sh
Basic サンプル アプリケーションのビルドおよび実行に必要な環境変数を設定する UNIX スクリプト。
setenvb.cmd
Basic サンプル アプリケーションのビルドおよび実行に必要な環境変数を設定する MS-DOS コマンド。
ubb_b.mk
UNIX オペレーティング システム用のコンフィグレーション ファイル。
ubb_b.nt
Windows オペレーティング システム用のコンフィグレーション ファイル。
makefileb.mk
UNIX オペレーティング システムでの Basic サンプル アプリケーション用の makefile
makefileb.nt
Windows オペレーティング システムでの Basic サンプル アプリケーション用の makefile
log.cpplog.hlog_client.cpplog_server.cpp
サンプル アプリケーションにログ機能とトレース機能を提供するクライアント アプリケーションとサーバ アプリケーション。これらのファイルは、\utils ディレクトリにある。
oradbconn.cpporanoconn.cpp
Oracle SQL データベース インスタンスへのアクセスを提供するファイル。これらのファイルは、\utils ディレクトリにある。
samplesdb.cppsamplesdb.h
サンプル アプリケーションでのデータベース例外に出力関数を提供するファイル。これらのファイルは、\utils ディレクトリにある。
unique_id.cppunique_id.h
サンプル アプリケーションの C++ Unique ID クラスのルーチン。これらのファイルは、\utils ディレクトリにある。
samplesdbsql.hsamplesdbsql.pc
SQL データベースへのアクセスを実装する C++ クラスのメソッド。これらのファイルは、\utils ディレクトリにある。
university.sql
University データベース用の SQL。このファイルは、\utils ディレクトリにある。

Basic サンプル アプリケーションのファイル保護の属性を変更する

Oracle Tuxedo ソフトウェアのインストール時には、サンプル アプリケーションは読み取り専用に設定されています。Basic サンプル アプリケーションのファイルを編集または作成するには、次のように作業ディレクトリにコピーしたファイルの保護を変更する必要があります。

Windows

prompt>attrib -r drive:\workdirectory\*.*

UNIX

prompt>chmod u+rw /workdirectory/*.*

環境変数を設定する

次のコマンドを使用して、Basic サンプル アプリケーションのクライアント アプリケーションとサーバ アプリケーションのビルドに使用する環境変数を設定します。

Windows

prompt>setenvb

UNIX

prompt>/bin/ksh

prompt>../setenvb.sh

University データベースを初期化する

次のコマンドを使用して、Basic サンプル アプリケーションで使用する University データベースを初期化します。

Windows

prompt>nmake -f makefileb.nt initdb

UNIX

prompt>make -f makefileb.mk initdb

UBBCONFIG ファイルをロードする

次のコマンドを使用して、UBBCONFIG ファイルをロードします。

Windows

prompt>tmloadcf -y ubb_b.nt

UNIX

prompt>tmloadcf -y ubb_b.mk

 


Basic サンプル アプリケーションのコンパイル

開発プロセスでは、buildobjclient および buildobjserver コマンドを使用して、クライアント アプリケーションとサーバ アプリケーションをビルドします。ただし、Basic サンプル アプリケーションの場合は、この手順は不要です。

Basic サンプル アプリケーションのディレクトリには、makefile が格納されています。この makefile により、クライアントとサーバ サンプル アプリケーションがビルドされます。

Basic サンプル アプリケーションの CORBA C++ クライアント アプリケーションとサーバ アプリケーションをビルドするには、次のコマンドを使用します。

Windows

prompt>nmake -f makefileb.nt

UNIX

prompt>make -f makefileb.mk

 


Basic サンプル アプリケーションの実行

Basic サンプル アプリケーションを実行するには、次の手順に従います。

  1. University サーバ アプリケーションを起動します。
  2. 1 つまたは複数のクライアント アプリケーションを起動します。

サーバ アプリケーションの起動

Basic サンプル アプリケーションでシステムおよびサンプル アプリケーションのサーバ アプリケーションを起動するには、次のコマンドを入力します。

prompt>tmboot -y

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

ほかのサンプル アプリケーションを使用するには、次のコマンドを入力して、システムおよびサンプル アプリケーションのサーバ プロセスを停止します。

prompt>tmshutdown

CORBA C++ クライアント アプリケーションの起動

Basic サンプル アプリケーションの CORBA C++ クライアント アプリケーションを起動するには、次のコマンドを入力します。

prompt>univb_client

 


Basic サンプル アプリケーションのクライアント アプリケーションの使用方法

以降の節では、Basic サンプル アプリケーションに含まれているクライアント アプリケーションについて簡単に説明します。

CORBA C++ クライアント アプリケーション

CORBA C++ クライアント アプリケーションを起動すると、メニューが表示されます。メニューには、次のオプションがあります。

<F>   Find courses
<A>   List all courses
<D>   Display course details
<E>   Exit

特定のカリキュラムのサブジェクトに一致するコースを検索するには、次の手順に従います。

  1. Options プロンプトで「F」を入力します。
  2. 画面に「Enter search string:」と表示されたら、「computer」などのテキスト文字列を入力します。入力する文字列は、大文字と小文字を任意で組み合わせてもかまいません。
  3. 検索文字列に一致したコースがすべて一覧表示されます。

データベース内のすべてのコースを一覧表示するには、次の手順に従います。

  1. Options プロンプトで「A」を入力します。
  2. 10 コースの一覧が表示されます。

  3. y」を入力すると、次の 10 コースの一覧が表示されます。「n」を入力すると、Options メニューに戻ります。

特定のコースの詳細を表示するには、次の手順に従います。

  1. Options プロンプトで「D」を入力します。
  2. 画面に「Course Number」と表示されたら、コース番号とその後に続けて「-1」を入力します。たとえば、次のように入力します。
  3. 100011
    100039
    -1

    指定したコースの要約が表示されます。

C++ CORBA クライアント アプリケーションを終了するには、Options プロンプトで「E」を入力します。


  ページの先頭       前  次