目次 前 次 PDF


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

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はBasicサンプル・アプリケーションの機能を表しています。
図3-1 Basicサンプル・アプリケーション
 
Basicサンプル・アプリケーションでは、次の機能について示します。
CORBAクライアント・アプリケーションとサーバー・アプリケーションの作成
CORBAアプリケーションの構成情報の定義
Oracle Tuxedo製品で用意されているCORBAコマンドとツールを使用した、クライアント・アプリケーションとサーバー・アプリケーションのビルド
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種類のクライアント・アプリケーションをサポートしています。
開発プロセスでは、次の処理を行うクライアント・アプリケーション・コードを記述します。
ORBを初期化します。
Bootstrap環境オブジェクトまたは標準CORBAメカニズムを使用して、Oracle Tuxedoドメインとの通信を確立します。
FactoryFinder環境オブジェクトへの初期参照を解決します。
ファクトリを使用してRegistrarオブジェクトのオブジェクト参照を取得します。
Registrarオブジェクトのget_courses_synopsis()およびget_courses_details()メソッドを呼び出します。
Basicサンプル・アプリケーションには、C++によるクライアント・アプリケーションが用意されています。クライアント・アプリケーションの記述方法については、『Oracle Tuxedo CORBAアプリケーション・スタート・ガイド』および『CORBAクライアント・アプリケーションの作成』を参照してください。
サーバー・アプリケーションの記述
開発プロセスでは、次の内容を記述します。
Universityサンプル・アプリケーションを初期化し、RegistrarオブジェクトをOracle Tuxedoドメインに登録するServerオブジェクト
RegistrarRegistrarFactory、およびCourseSynopsisEnumeratorオブジェクトのオペレーションのメソッド実装
サンプル・アプリケーションには、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ファイル。ASCII形式なので、任意のエディタで作成および変更できます。すべてのUniversityサンプル・アプリケーションで使用されるUBBCONFIGファイルの必須パラメータの設定については、「環境設定」を参照してください。
TUXCONFIGファイルは、バイナリ形式のUBBCONFIGファイルで、tmloadcfコマンドを使用して作成します。tmloadcfコマンドを実行する際は、TUXCONFIG環境変数をTUXCONFIGファイルの名前とディレクトリの場所に設定する必要があります。
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.cppおよびoranoconn.cpp
Oracle SQLデータベース・インスタンスへのアクセスを提供するファイル。これらのファイルは、\utilsディレクトリにあります。
samplesdb.cppおよびsamplesdb.h
サンプル・アプリケーションでのデータベース例外に出力関数を提供するファイル。これらのファイルは、\utilsディレクトリにあります。
unique_id.cppunique_id.h
サンプル・アプリケーションのC++ Unique IDクラスのルーチン。これらのファイルは、\utilsディレクトリにあります。
samplesdbsql.hおよびsamplesdbsql.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
このコマンドを入力すると、次のサーバー・プロセスが開始されます。
TMSYSEVT
Oracle TuxedoシステムのEventBroker。
TMFFNAME
NameManagerサービスやFactoryFinderサービスなどのトランザクション管理サービス。
TMIFSRVR
インタフェース・リポジトリ・サーバー・プロセス。
univb_server
Universityサーバー・プロセス。
ISL
IIOPリスナー/ハンドラ・プロセス。
ほかのサンプル・アプリケーションを使用するには、次のコマンドを入力して、システムおよびサンプル・アプリケーションのサーバー・プロセスを停止します。
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」と入力します。入力する文字列は、大文字と小文字を任意で組み合せてもかまいません。
検索文字列に一致したコースがすべて一覧表示されます。
データベース内のすべてのコースを一覧表示するには、次の手順に従います。
1.
Optionsプロンプトで「A」を入力します。
10コースの一覧が表示されます。
2.
「y」を入力すると、次の10コースの一覧が表示されます。「n」を入力すると、Optionsメニューに戻ります。
特定のコースの詳細を表示するには、次の手順に従います。
1.
Optionsプロンプトで「D」を入力します。
2.
画面に「Course Number」と表示されたら、コース番号とその後に続けて「-1」を入力します。例:
100011
100039
-1
指定したコースの要約が表示されます。
C++ CORBAクライアント・アプリケーションを終了するには、Optionsプロンプトで「E」を入力します。

Copyright ©1994, 2017,Oracle and/or its affiliates. All rights reserved