CORBAリクエスト・レベルのインターセプタの使用

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

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

Oracle Tuxedoソフトウェアに同梱されたインターセプタ例を理解して使用するには、PersonQueryサンプル・アプリケーションをビルドして実行する必要があります。PersonQueryサンプル・アプリケーション自体には、インターセプタは含まれていません。しかし、このアプリケーションは、以降の3つの章で説明するインターセプタのサンプル・アプリケーションの基本として使用されます。

このトピックには次の項が含まれます:

注: 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に関する技術的なサポートまたはドキュメントは提供していません。

 


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

PersonQueryサンプル・アプリケーションは、単純なデータベース問合せインタフェースを実装します。PersonQueryアプリケーションを使用すると、データベースから次のような特定の検索基準に一致する人物の情報を取得できます。

PersonQueryアプリケーションには、次のコンポーネントが含まれます。

PersonQueryデータベース

サーバー・アプリケーションのPersonQueryデータベースには、データベース内の各人物に関する次の情報が含まれます。

クライアント・アプリケーションのコマンド行インタフェース

PersonQueryサンプル・アプリケーションは、ユーザーがデータベース問合せコマンド、およびアプリケーション終了コマンドを入力できるクライアント・コンポーネントの単純なコマンド行インタフェースを実装します。

データベース問合せコマンドの構文は次のとおりです。

Option? command [keyword] [command [keyword]]...

このコマンド構文の詳細は以下のとおりです。

 


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

リスト4-1は、PersonQueryサンプル・アプリケーションで実装されているOMG IDLコードを示します。

リスト4-1 PersonQueryアプリケーションのインタフェース用OMG IDL
#pragma prefix “beasys.com”

interface PersonQuery
{
       enum MONTHS {Empty,Jan, Feb, Mar, Apr, May, Jun, Jul, Aug,
                     Sep, Oct, Nov, Dec};
       struct date_ {
                      MONTHS Month;
                      short Day;
                      short Year;
                  };
       typedef date_ Date;
       struct addr_ {
              short number;
              string street;
              string town;
              string state;
              string country;
       };
       typedef addr_ Address;
       enum MARRIAGE {not_known, single, married, divorced};
       enum HOBBIES {who_cares, rocks, swim, tv, stamps, photo,
                     weaving};
       enum SEX {cant_tell, male, female};
       enum COLOR {white, black, brown, yellow, red, green, blue,
                   gray, violet, hazel, unknown, dontcare};
       enum MARKINGS {dont_care, tattoo, scar, missing_limb,
                      none};
       struct person_ {
              string        name;
              Address       addr;
              string        ss;
              SEX           sex;
              short         age;
              MARRIAGE      mar;
              HOBBIES       rec;
              Date          dob;
              short         ht;
              long          wt;
              COLOR         hair;
              COLOR         eye;
              COLOR         skin;
              MARKINGS      other;
       };
typedef person_ Person;
        typedef sequence <Person> Possibles;
        union reason_ switch (short)
                {
                case 0:      string      name;
                case 1:      Address     addr;
                case 2:      string      ss;
                case 3:      SEX         sex;
                case 4:      short       age;
                case 5:      MARRIAGE    mar;
                case 6:      HOBBIES     rec;
                case 7:      Date        dob;
                case 8:      short       ht;
                case 9:      long        wt;
                case 10:     COLOR       hair;
                case 11:     COLOR       eyes;
                case 12:     COLOR       skin;
                case 13:     MARKINGS    other;
       };
       typedef reason_ Reason;

       exception DataOutOfRange
       {
              Reason why;
       };
      boolean findPerson (
                in Person who, out Possibles hits)
                raises (DataOutOfRange);
      boolean findPersonByName (
                in string name, out Possibles hits)
                raises (DataOutOfRange);
      boolean findPersonByAddress (
                in Address addr, out Possibles hits)
                raises (DataOutOfRange);
      boolean findPersonBySS (
                in string ss, out Possibles hits)
                raises (DataOutOfRange);
      boolean findPersonByAge (
                in short age, out Possibles hits)
                raises (DataOutOfRange);
      boolean findPersonByMarriage (
                in MARRIAGE mar, out Possibles hits)
                raises (DataOutOfRange);
      boolean findPersonByHobbies (
                in HOBBIES rec, out Possibles hits)
                raises (DataOutOfRange);
      boolean findPersonBydob (
                in Date dob, out Possibles hits)
                raises (DataOutOfRange);
      boolean findPersonByHeight (
                in short ht, out Possibles hits)
                raises (DataOutOfRange);
      boolean findPersonByWeight (
                in long wt, out Possibles hits)
                raises (DataOutOfRange);
      boolean findPersonByHairColor (
                in COLOR col, out Possibles hits)
                raises (DataOutOfRange);
      boolean findPersonBySkinColor (
                in COLOR col, out Possibles hits)
                raises (DataOutOfRange);
      boolean findPersonByEyeColor (
                in COLOR col, out Possibles hits)
                raises (DataOutOfRange);
      boolean findPersonByOther (
                in MARKINGS other, out Possibles hits)
                raises (DataOutOfRange);
      void      exit();
};
interface QueryFactory
{
      PersonQuery createQuery (in string name);
};

 


PersonQueryサンプル・アプリケーションのビルドと実行

PersonQueryサンプル・アプリケーションをビルドして実行するには、以下の手順に従います。

  1. PersonQueryサンプル・アプリケーションのファイルを作業ディレクトリにコピーします。
  2. PersonQueryサンプル・アプリケーションのファイルの保護を変更します。
  3. 環境変数を設定します。
  4. CORBAクライアントおよびサーバーのサンプル・アプリケーションをビルドします。
  5. PersonQueryクライアントおよびサーバー・アプリケーションを起動します。
  6. クライアント・アプリケーションを使用して、サーバー上のデータベースを検索するためのいくつかのコマンドを入力します。
  7. PersonQueryサンプル・アプリケーションを停止します。

PersonQueryサンプル・アプリケーション用ファイルのコピー

リクエスト・レベルのインターセプタのサンプル・アプリケーション用ファイルは、次のディレクトリに格納されています。

$TUXDIR\samples\corba\interceptors_cxx

これらのファイルをビルドおよび実行できるようにコピーするには、次の手順に従います。

  1. サンプル・ファイルのコピー先となる作業ディレクトリを作成します。
  2. 1つ前の手順で作成した作業ディレクトリにinterceptors_cxxサンプルをコピーします。

Windows 2003

> xcopy /s/i %TUXDIR%\samples\corba\interceptors_cxx <workdirectory>\cxx

UNIX

> cp -R $TUXDIR/samples/corba/interceptors_cxx <workdirectory>/cxx
  1. サンプル・ファイルが格納された作業ディレクトリに移動します。

Windows 2003

> cd <workdirectory>\cxx

UNIX

> cd <workdirectory>/cxx

PersonQueryサンプル・アプリケーションには表4-2でリストおよび説明されているファイルを使用します。

表4-2 インターセプタのサンプル・アプリケーションに含まれるファイル
ディレクトリ
ファイル
説明
app_cxx (interceptors_cxxのサブディレクトリ)
Readme.txt
インターセプタのサンプル・アプリケーション一式のビルドと実行に関する最新情報が記載されたファイル。
makefile.mk
UNIXシステムでインターセプタのサンプル・アプリケーション一式すべて(PersonQueryアプリケーションおよび全サンプル・インターセプタ)をビルドするためのmakefile。
makefile.nt
Windows 2003システムでインターセプタのサンプル・アプリケーション一式すべて(PersonQueryアプリケーションおよび全サンプル・インターセプタ)をビルドするためのmakefile。
makefile.inc
適切なplatform.incファイルで定義されるマクロを使用する、一般的なmakefile。
personquery_i.h and
personquery_i.cpp
PersonQueryインタフェースの実装。
personqueryc.cpp
PersonQueryアプリケーションのソース・ファイル。
personquerys.cpp
PersonQueryデータベース・サーバーのソース・ファイル。
setenv.ksh
UNIXシステムでインターセプタのサンプル・アプリケーション一式すべてをビルドするために必要な全環境変数を設定するシェル・ファイル。
setenv.cmd
Windows 2003システムでインターセプタのサンプル・アプリケーション一式すべてをビルドするために必要な全環境変数を設定するコマンド・ファイル。
data_cxx
(interceptors_cxxのサブディレクトリ)
InterceptorData.cpp
InterceptorData C++ソース・ファイル。
InterceptorData.h
InterceptorDataクラスの定義ファイル。
makefile.inc
InterceptorDataインターセプタのビルドに、適切なplatform.incファイルで定義されたマクロを使用する、一般的なmakefile。
makefile.mk
UNIXシステムでInterceptorDataインターセプタをビルドするmakefile。
makefile.nt
Windows 2003システムでInterceptorDataインターセプタをビルドするmakefile。
simple_cxx (interceptors_cxxのサブディレクトリ)
InterceptorSimp.cpp
InterceptorSimp C++ソース・ファイル。
InterceptorSimp.h
InterceptorSimpクラスの定義ファイル。
makefile.inc
InterceptorSimpインターセプタのビルドに、適切なplatform.incファイルで定義されたマクロを使用する、一般的なmakefile。
makefile.mk
UNIXシステムでInterceptorSimpインターセプタをビルドするmakefile。
makefile.nt
Windows 2003システムでInterceptorSimpインターセプタをビルドするmakefile。
security_cxx (interceptors_cxxのサブディレクトリ)
InterceptorSec.cpp
InterceptorSec C++ソース・ファイル。
InterceptorSec.h
InterceptorSecクラスの定義ファイル。
makefile.inc
InterceptorSecインターセプタのビルドに、適切なplatform.incファイルで定義されたマクロを使用する、一般的なmakefile。
makefile.mk
UNIXシステムでInterceptorSecインターセプタをビルドするmakefile。
makefile.nt
Windows 2003システムでInterceptorSecインターセプタをビルドするmakefile。
common (interceptors_cxxのサブディレクトリ)
app.inc
アプリケーションの構成のためのmakefile定義を含むファイル。
platform.inc
インターセプタのサンプル・アプリケーション一式をビルドするための、プラットフォーム固有のmake定義が含まれるファイル。platformは、使用しているマシンのシステム・プラットフォームを表します。
common.mk
UNIXシステムのmakefile定義が含まれるファイル。
makefile.inc
適切なplatform.incファイルで定義されるマクロを使用する、一般的なmakefile。
makefile.mk
UNIXシステムでサンプル・アプリケーション用ファイル一式すべてをビルドするmakefile。
makefile.nt
Windowsシステムでサンプル・アプリケーション用ファイル一式すべてをビルドするmakefile。
personquery.idl
PersonQueryサンプル・アプリケーションのインタフェースを定義するOMG IDLファイル。

PersonQueryアプリケーション・ファイルに対する保護の変更

Oracle Tuxedoソフトウェアのインストール時には、サンプル・アプリケーションは読取り専用に設定されています。PersonQueryサンプル・アプリケーションのファイルを編集またはビルドできるようにするには、次のように作業ディレクトリにコピーしたファイルの保護属性を変更する必要があります。まず、サンプル・アプリケーションのファイルをコピーしたディレクトリにアクセスしていることを確認します。

Windows 2003

prompt>attrib -r /s *.* 

UNIX

prompt>/bin/ksh 
ksh prompt>chmod -R u+w *.*

環境変数の設定

PersonQueryサンプル・アプリケーションをビルドして実行する前に、アプリケーションが実行される環境を設定する必要があります。PersonQueryサンプル・アプリケーションのビルドと実行に必要な環境変数およびプロパティの設定を行うには、次のコマンドを入力します。

Windows 2003

> setenv.cmd

UNIX:

> $ . ./setenv.ksh

CORBAクライアントおよびサーバー・アプリケーションのビルド

次のコマンドにより、PersonQueryアプリケーションをビルドし、マシン固有のUBBCONFIGファイルを作成し、UBBCONFIGファイルをロードできます。

Windows 2003

> nmake -f makefile.nt

UNIX

$ make -f makefile.mk
注: 便宜上、この手順で実行されるmakefileによってインターセプタのサンプル一式すべてをビルドします。これには、InterceptorSimp、InterceptorSec、およびInterceptorDataインターセプタも含まれます。これらのインターセプタの実装とビルド、およびPersonQueryサンプル・アプリケーションによる実行については、以降の章で説明します。

PersonQueryクライアントおよびサーバー・アプリケーションの起動

次のコマンドを入力して、PersonQueryサンプル・アプリケーションを起動します。

prompt> tmboot -y

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

PersonQueryサンプル・アプリケーションの代表的な使用方法として、次の手順に従います。

  1. 次の例のように、1つの特性について問合せコマンドを入力し、返された項目数を確認します。
  2. Option? hair brown eyes blue
  3. 1つ前の手順で問合せを行った特性に関し、さらに問合せデータを入力します。
  4. すべての問合せデータが必要なレベルに絞られるまで、問合せを続行します。
  5. resultコマンドを入力して、最終的な問合せ結果を表示します。
  6. 新しい問合せサイクルを開始します。
  7. exitコマンドを入力して、アプリケーションを終了します。

PersonQueryサンプル・アプリケーションの停止

PersonQueryサンプル・アプリケーションを停止するには、次のコマンドを入力します。

prompt>tmshutdown -y

  先頭に戻る       前  次