CORBA Universityサンプル・アプリケーション・ガイド

     前  次    新規ウィンドウで目次を開く  新規ウィンドウで索引を開く  PDFとして表示 - 新規ウィンドウ  Adobe Readerを取得 - 新規ウィンドウ
コンテンツはここから始まります

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アプリケーションの開発プロセスの説明については、『Oracle 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; // bitmask of days
        unsigned short start_hour; // whole hours in military time
        unsigned short duration; // minutes
    };
    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 = all
            out unsigned long number_remaining,
            out CourseSynopsisEnumerator rest
        );
    CourseDetailsList get_courses_details(in CourseNumberList
        courses);
    interface RegistrarFactory
    {
        Registrar find_registrar(
        );
    };
};

 


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

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

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

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

 


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

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

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

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

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

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

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

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

サーバー・アプリケーションの記述については、『CORBAサーバー・アプリケーションの作成』を参照してください。

 


Basicサンプル・アプリケーションの構成

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

構成ファイルには次の2種類があります。

UBBCONFIGファイルおよびtmloadcfコマンドについては、『Oracle Tuxedoアプリケーションの設定』および『Oracle 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」を入力します。


  先頭に戻る       前  次