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サンプル・アプリケーションは、ユーザーがデータベース問合せコマンド、およびアプリケーション終了コマンドを入力できるクライアント・コンポーネントの単純なコマンド行インタフェースを実装します。
Option?command
[
keyword
] [
command
[
keyword]]...
リスト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サンプル・アプリケーションをビルドして実行するには、以下の手順に従います。
リクエスト・レベルのインターセプタのサンプル・アプリケーション用ファイルは、次のディレクトリに格納されています。
$TUXDIR\samples\corba\interceptors_cxx
これらのファイルをビルドおよび実行できるようにコピーするには、次の手順に従います。
> xcopy /s/i %TUXDIR%\samples\corba\interceptors_cxx <workdirectory
>\cxx
> cp -R $TUXDIR/samples/corba/interceptors_cxx <workdirectory
>/cxx
> cd <workdirectory
>\cxx
> cd <workdirectory
>/cxx
PersonQueryサンプル・アプリケーションには表4-2でリストおよび説明されているファイルを使用します。
Oracle Tuxedoソフトウェアのインストール時には、サンプル・アプリケーションは読取り専用に設定されています。PersonQueryサンプル・アプリケーションのファイルを編集またはビルドできるようにするには、次のように作業ディレクトリにコピーしたファイルの保護属性を変更する必要があります。まず、サンプル・アプリケーションのファイルをコピーしたディレクトリにアクセスしていることを確認します。
prompt>attrib -r /s *.*
prompt>/bin/ksh
ksh prompt>chmod -R u+w *.*
PersonQueryサンプル・アプリケーションをビルドして実行する前に、アプリケーションが実行される環境を設定する必要があります。PersonQueryサンプル・アプリケーションのビルドと実行に必要な環境変数およびプロパティの設定を行うには、次のコマンドを入力します。
> setenv.cmd
> $ . ./setenv.ksh
次のコマンドにより、PersonQueryアプリケーションをビルドし、マシン固有のUBBCONFIG
ファイルを作成し、UBBCONFIG
ファイルをロードできます。
> nmake -f makefile.nt
$ make -f makefile.mk
注: | 便宜上、この手順で実行されるmakefileによってインターセプタのサンプル一式すべてをビルドします。これには、InterceptorSimp、InterceptorSec、およびInterceptorDataインターセプタも含まれます。これらのインターセプタの実装とビルド、およびPersonQueryサンプル・アプリケーションによる実行については、以降の章で説明します。 |
次のコマンドを入力して、PersonQueryサンプル・アプリケーションを起動します。
prompt> tmboot -y
PersonQueryサンプル・アプリケーションの代表的な使用方法として、次の手順に従います。
PersonQueryサンプル・アプリケーションを停止するには、次のコマンドを入力します。
prompt>tmshutdown -y