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

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

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

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

注意 : Production サンプル アプリケーションのクライアント アプリケーションは、Wrapper サンプル アプリケーションのクライアント アプリケーションと同じ方法で動作します。
注意 : 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 に関する技術的なサポートやマニュアルは提供していません。

 


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

Production サンプル アプリケーションには、Wrapper サンプル アプリケーションと同じエンド ユーザ向けの機能が用意されています。Production サンプル アプリケーションでは、Oracle Tuxedo ソフトウェアの CORBA 機能を利用して、CORBA アプリケーションをスケーリングする方法を示します。Production サンプル アプリケーションでは、以下の処理を行います。

注意 : Production サンプル アプリケーションの使用を簡単にするために、Oracle Tuxedo ソフトウェア キットでは、1 台のマシン上で 1 つのデータベースを使用して実行できるようにコンフィグレーションされています。ただし、Production サンプル アプリケーションでは、複数のマシンで複数のデータベースを使用して実行できるようにコンフィグレーションされています。複数のマシンおよびデータベースへのコンフィグレーションを変更する場合、UBBCONFIG ファイルを変更し、データベースを分割するだけで変更できます。

以下の節では、Production サンプル アプリケーションで、複製されたサーバ アプリケーション、複製されたサーバ グループ、オブジェクト状態管理およびファクトリ ベース ルーティングを使用して、Production サンプル アプリケーションをスケーリングする方法について説明します。

サーバ アプリケーションの複製

サーバ アプリケーションを複製すると、以下の処理が可能になります。

Production サンプル アプリケーションでは、サーバ アプリケーションは次の方法で複製されます。

図 7-1 に、複製された ORA_GRP および APP_GRP グループを示します。

図 7-1 Production サンプル アプリケーションの複製されたサーバ グループ

Production サンプル アプリケーションの複製されたサーバ グループ

図 7-1 では、次の点に注意してください。

サーバ グループの複製

サーバ グループは、既存の CORBA アプリケーションにサーバ マシンを追加できる、Oracle Tuxedo ソフトウェアの機能です。サーバ グループを複製すると、次の処理が可能になります。

サーバ グループのコンフィグレーションおよび複製方法は、UBBCONFIG ファイルで指定します。

図 7-2 に、2 番目のサーバ マシンで複製された Production サンプル アプリケーションのサーバ グループを示します。Production サンプル アプリケーションの UBBCONFIG ファイルでは、複製されたサーバ グループは、ORA_GRP2 および APP_GRP2 として定義されています。

図 7-2 サーバ マシン間でのサーバ グループの複製

サーバ マシン間でのサーバ グループの複製

図 7-2 では、Production マシン 1 および 2 のサーバ グループの内容で異なるのはデータベースのみです。University データベースは、2 つのデータベースに分割されています。Production マシン 1 のデータベースには、ID が 100001 ~ 100005 の学生の学生情報および口座情報が格納されています。Production マシン 2 のデータベースには、ID が 100006 ~ 100010 の学生の学生情報および口座情報が格納されています。

ステートレス オブジェクト モデルの使用方法

スケーラビリティを向上させるには、Production サンプル アプリケーションで、Registrar および Teller オブジェクトが method アクティブ化ポリシーを持つようにコンフィグレーションします。method アクティブ化ポリシーによって、オブジェクトの振る舞いは次のように変化します。

Basic から Production までのサンプル アプリケーションの Registrar オブジェクトには、process というアクティブ化ポリシーがあります。Registrar オブジェクトのクライアント アプリケーションの要求は、すべてサーバ マシンのメモリにある同じオブジェクトのインスタンスに送られます。この設計は小規模なデプロイメントに適しています。ただし、クライアント アプリケーションからの要求が増加すると、Registrar オブジェクトの要求はキューに登録されるようになり、応答時間が遅くなります。

これに対し、Registrar および Teller オブジェクトに method アクティブ化ポリシーがあり、これらのオブジェクトを管理するサーバ アプリケーションを複製することにより、Registrar および Teller オブジェクトはクライアント アプリケーションからの複数の要求を並列処理できるようになります。唯一の制限は、Registrar および Teller オブジェクトのインスタンス化に利用可能なサーバ アプリケーション プロセスの数です。

CORBA アプリケーションでは、複製済みの各サーバ アプリケーション プロセスで Registrar および Teller オブジェクトのコピーをインスタンス化するために、Registrar および Teller オブジェクトには、ユニークなオブジェクト ID (OID) が割り当てられています。ユニークな OID は、これらのオブジェクトを作成するファクトリで割り当てられます。ユニークなオブジェクト ID の生成についての詳細は、『Tuxedo CORBA サーバ アプリケーションの開発方法』を参照してください。

ファクトリ ベース ルーティングの使用方法

ファクトリ ベース ルーティングは、クライアント アプリケーションからの要求を特定のサーバ グループに送信可能にする CORBA の機能です。ファクトリ ベース ルーティングを使用すると、CORBA アプリケーションの処理にかかる負荷を複数のサーバ マシンに分散できます。Production サンプル アプリケーションでは、ファクトリ ベース ルーティングを次のように使用します。

ファクトリ ベース ルーティングの設定についての詳細は、『Tuxedo CORBA サーバ アプリケーションの開発方法』を参照してください。

 


Production サンプル アプリケーションの開発プロセス

ここでは、CORBA アプリケーションのスケーリングに必要な開発プロセスについて説明します。以下の手順は、「Basic サンプル アプリケーション」で概説した開発手順の追加手順です。

注意 : この節に記載されている手順は既に完了しており、Production サンプル アプリケーションに組み込まれています。

OMG IDL

開発プロセスでは、ファクトリ ベース ルーティングをサポートするために、Object Management Group (OMG) インタフェース定義言語 (IDL) の次のオペレーションの定義を変更します。

ファクトリ ベース ルーティングの実装についての詳細は、『Tuxedo CORBA サーバ アプリケーションの開発方法』を参照してください。

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

開発プロセスでは、Registrar オブジェクトの作成時に STU_ID 値を指定します。STU_ID 値には、クライアント アプリケーションからの要求のルーティング先となるサーバ グループを定義します。

Production サンプル アプリケーションでは、クライアント アプリケーションの場合と同じ方法で、University サーバ アプリケーションで Teller オブジェクトが作成されます。そのため、Teller オブジェクトの作成時に ACT_NUM 値を指定する必要があります。

サーバ アプリケーション

開発プロセスでは、RegistrarFactoryTellerFactory オブジェクトの TP::create_object_reference() オペレーションの呼び出しを変更して、ルーティング基準を指定する NVlist を組み込む必要があります。TP::create_object_reference() オペレーションの criteria パラメータには、ファクトリ ベース ルーティングで使用する名前付き値のリストを次のように指定します。

criteria パラメータの値は、UBBCONFIG ファイルの ROUTING セクションで指定したルーティング基準名、フィールド、およびフィールド型と正確に一致しなければなりません。

ファクトリでのファクトリ ベース ルーティングの実装についての詳細は、『Tuxedo CORBA サーバ アプリケーションの開発方法』を参照してください。

UBBCONFIG ファイル

CORBA アプリケーションにおけるスケーラビリティの向上には、UBBCONFIG ファイルが重要な役割を果たします。ここでは、Production サンプル アプリケーションの UBBCONFIG ファイルを変更して次の処理を行う方法について説明します。

サーバ アプリケーション プロセスおよびサーバ グループの複製

開発プロセスでは、以下の方法で UBBCONFIG ファイルを変更して、サーバ アプリケーション プロセスおよびサーバ グループの複製をコンフィグレーションします。

  1. UBBCONFIG ファイルの GROUPS セクションに、コンフィグレーションするグループの名前を指定します。Production サンプル アプリケーションには、APP_GRP1APP_GRP2ORA_GRP1、および ORA_GRP2 の 4 つのサーバ グループがあります。
  2. UBBCONFIG ファイルの SERVERS セクションに、複製するサーバ アプリケーション プロセスに関する次の情報を入力します。
    • サーバ アプリケーションの名前。
    • GROUP パラメータ。サーバ アプリケーション プロセスが属するサーバ グループの名前を指定します。複数のグループに関係するサーバ プロセスを複製する場合は、各グループに 1 つずつサーバ プロセスを指定します。
    • SRVID パラメータ。サーバ マシンのユニークな管理 ID を指定します。
    • MIN パラメータ。CORBA アプリケーションの起動時に開始する、サーバ アプリケーション プロセスのインスタンス数を指定します。開始するサーバ アプリケーション プロセスは最低 2 つ必要です。
    • MAX パラメータ。同時に実行できるサーバ アプリケーション プロセスの最大数を指定します。指定可能なサーバ アプリケーション プロセスの数は最大 5 つです。

MIN および MAX パラメータによって、任意のオブジェクトで任意のサーバ アプリケーションが要求をどの程度まで並列処理できるかを指定します。実行時には、必要に応じて、システム管理者がリソースのボトルネックを調べて、新しいサーバ プロセスを起動することができます。このように、アプリケーションのスケーリングは、システム管理者が行います。

次に、Production サンプル アプリケーションの UBBCONFIG ファイルの GROUPS および SERVERS セクションから引用した行を例示します。

*GROUPS
APP_GRP1
LMID = SITE1
GRPNO = 2
TMSNAME = TMS
APP_GRP2
LMID = SITE1
GRPNO = 3
TMSNAME = TMS
ORA_GRP1
LMID = SITE1
GRPNO = 4
OPENINFO = "ORACLE_XA:Oracle_XA+Acc=P/scott/tiger+SesTm=100+LogDir
=.+MaxCur=5"
CLOSEINFO = ""
TMSNAME = "TMS_ORA"
ORA_GRP2
LMID = SITE1
GRPNO = 5
OPENINFO = "ORACLE_XA:Oracle_XA+Acc=P/scott/tiger+SesTm=100+LogDir
=.+MaxCur=5"
CLOSEINFO = ""
TMSNAME = "TMS_ORA"
*SERVERS
# デフォルトでは、各サーバのインスタンスを 2 つアクティブ化
# して、管理者が各サーバのインスタンスを 5 つ
# までアクティブ化できるようにしている
DEFAULT:
MIN = 2
MAX = 5
tellp_server
SRVGRP = ORA_GRP1
SRVID = 10
RESTART = N
tellp_server
SRVGRP = ORA_GRP2
SRVID = 10
RESTART = N
billp_server
SRVGRP = APP_GRP1
SRVID = 10
RESTART = N
billp_server
SRVGRP = APP_GRP2
SRVID = 10
RESTART = N
univp_server
SRVGRP = ORA_GRP1
SRVID = 20
RESTART = N
univp_server
SRVGRP = ORA_GRP2
SRVID = 20
RESTART = N

ファクトリ ベース ルーティングの実装

ファクトリ ベース ルーティングを使用できるようにするには、各インタフェースについて、UBBCONFIG ファイルに次の情報を定義する必要があります。

開発プロセスでは、UBBCONFIG ファイルを以下のように変更します。

  1. INTERFACES セクションには、ファクトリ ベース ルーティングを有効にするインタフェースの名前の一覧が示されます。このセクションで、各インタフェースのルーティング値を指定します。ルーティング値は、FACTORYROUTING 識別子で指定します。
  2. 次に、Production サンプル アプリケーションの Registrar および Teller オブジェクトの FACTORYROUTING 識別子の例を示します。

    INTERFACES
    "IDL:beasys.com/UniversityP/Registrar:1.0"
    FACTORYROUTING = STU_ID
    "IDL:beasys.com/BillingP/Teller:1.0"
    FACTORYROUTING = ACT_NUM
  3. ROUTING セクションでは、ルーティング値ごとに以下のデータを指定します。
    • TYPE パラメータ。ルーティングの種類を指定します。Production サンプル アプリケーションでは、ルーティングの種類はファクトリ ベース ルーティングです。したがって、このパラメータは、FACTORY と定義します。
    • FIELD パラメータ。ファクトリがルーティング値に挿入する名前を指定します。Production サンプル アプリケーションでは、フィールドのパラメータは student_id および account_number です。
    • FIELDTYPE パラメータ。ルーティング値のデータ型を指定します。Production サンプル アプリケーションでは、STU_ID および ACT_NUM のフィールド タイプは long です。
    • RANGES パラメータ。各グループにルーティングされる値を指定します。
    • 次に、Production サンプル アプリケーションで使用する UBBCONFIG ファイルの ROUTING セクションの例を示します。

      *ROUTING
      STU_ID
      FIELD = "student_id"
      TYPE = FACTORY
      FIELDTYPE = LONG
      RANGES = "100001-100005:ORA_GRP1,100006-100010:ORA_GRP2"
      ACT_NUM
      FIELD = "account_number"
      TYPE = FACTORY
      FIELDTYPE = LONG
      RANGES = "200010-200014:APP_GRP1,200015-200019:APP_GRP2"

      上記の例では、ID が 100001 ~ 100005 の学生の Registrar オブジェクトは ORA_GRP1 でインスタンス化され、ID が 100006 ~ 100010 の学生のオブジェクトは ORA_GRP2 でインスタンス化されることを示しています。同様に、200010 ~ 200014 の口座番号の Teller オブジェクトは APP_GRP1 でインスタンス化され、200015 ~ 200019 の口座番号のオブジェクトは APP_GRP2 でインスタンス化されることを示しています。

  4. UBBCONFIG ファイルの ROUTING セクションにある RANGES 識別子で指定されたグループを識別およびコンフィグレーションする必要があります。たとえば、Production サンプル アプリケーションでは、ORA_GRP1ORA_GRP2APP_GRP1、および APP_GRP2 の 4 つのグループが指定されています。これらのグループをコンフィグレーションし、グループが実行されるマシンを識別する必要があります。
注意 : GROUPS セクションのサーバ グループの名前と ROUTING セクションで指定したグループの名前は、正しく一致している必要があります。

ICF ファイル

開発プロセスでは、RegistrarRegistrarFactoryTeller、および TellerFactory オブジェクトのアクティブ化ポリシーを process から method に変更する必要があります。CORBA オブジェクトのアクティブ化ポリシーとトランザクション ポリシーの定義については、『Tuxedo CORBA サーバ アプリケーションの開発方法』を参照してください。

 


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

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

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

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

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

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

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

Windows

drive:\TUXDIR\samples\corba\university\production

UNIX

/usr/TUXDIR/samples/corba/university/production

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

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

表 7-1 Production サンプル アプリケーションに含まれるファイル
ファイル
説明
billp.idl
Teller および TellerFactory インタフェースを宣言する OMG IDL。
univp.idl
CourseSynopsisEnumeratorRegistrar、および RegistrarFactory インタフェースを宣言する OMG IDL。
billps.cpp
Production サンプル アプリケーションの Billing サーバ アプリケーション用 C++ ソース コード。
univps.cpp
Production サンプル アプリケーションの University サーバ アプリケーション用 C++ ソース コード。
billp__i.h
billp_i.cpp
Teller および TellerFactory インタフェースのメソッド実装用 C++ ソース コード。
univp_i.h
univp_i.cpp
CourseSynopsisEnumeratorRegistrar、および RegistrarFactory インタフェースのメソッド実装用 C++ ソース コード。
univpc.cpp
Production サンプル アプリケーションの CORBA C++ クライアント アプリケーション用 C++ ソース コード。
univp_utils.h
univp_utils.cpp
CORBA C++ クライアント アプリケーションのデータベース アクセス関数を定義するファイル。
univp.icf
Production サンプル アプリケーションの University サーバ アプリケーション用実装コンフィグレーション ファイル (ICF)。
billp.icf
Production サンプル アプリケーションの Billing サーバ アプリケーション用 ICF ファイル。
tellw_flds、tellw_u.c、tellw_c.h、tellws.ec
ATMI アプリケーション Teller のファイル。
setenvp.sh
Production サンプル アプリケーションのビルドおよび実行に必要な環境変数を設定する UNIX スクリプト。
setenvp.cmd
Production サンプル アプリケーションのビルドおよび実行に必要な環境変数を設定する MS-DOS コマンド。
ubb_p.mk
UNIX オペレーティング システム用の UBBCONFIG ファイル。
ubb_p.nt
Windows オペレーティング システム用の UBBCONFIG ファイル。
makefilep.mk
UNIX オペレーティング システムでの Production サンプル アプリケーション用の makefile
makefilep.nt
Windows オペレーティング システムでの Production サンプル アプリケーション用の 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 ディレクトリにある。

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

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

Windows

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

UNIX

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

環境変数を設定する

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

Windows

prompt>setenvp

UNIX

prompt>/bin/ksh

prompt>../setenvp.sh

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

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

Windows

prompt>nmake -f makefilep.nt initdb

UNIX

prompt>make -f makefilep.mk initdb

UBBCONFIG ファイルをロードする

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

Windows

prompt>tmloadcf -y ubb_p.nt

UNIX

prompt>tmloadcf -y ubb_p.mk

UBBCONFIG ファイルの作成プロセスでは、アプリケーション パスワードの入力が求められます。このパスワードは、クライアント アプリケーションへのログオンに使用されます。パスワードを入力して Enter キーを押します。その際、パスワードを再入力してパスワードの確認を求めるメッセージが表示されます。

トランザクション ログを作成する

トランザクション ログには、CORBA アプリケーションでのトランザクション処理が記録されます。開発プロセスでは、UBBCONFIG ファイルの TLOGDEVICE パラメータでトランザクション ログの場所を定義する必要があります。Production サンプル アプリケーションの場合、トランザクション ログは作業ディレクトリに格納されています。

Production サンプル アプリケーションのトランザクション ログを開くには、次の手順に従います。

  1. 次のコマンドを入力して、会話型の管理インタフェースを起動します。
  2. tmadmin

  3. 次のコマンドを入力して、トランザクション ログを作成します。
  4. crdl -b blocks -z directorypath
    crlog -m SITE1

    この例では、

    blocks にトランザクション ログに割り当てるブロック数を指定し、directorypath にトランザクション ログの場所を指定します。directorypath オプションは、UBBCONFIG ファイルの TLOGDEVICE パラメータで指定した場所と一致しなければなりません。Windows でのコマンドの例を次に示します。

    crdl -b 500 -z c:\mysamples\university\production\TLOG

  5. q」を入力して、会話型の管理インタフェースを終了します。

 


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

開発プロセスでは、buildobjclient および buildobjserver コマンドを使用して、クライアント アプリケーションとサーバ アプリケーションをビルドします。ただし、Production サンプル アプリケーションの場合は、この手順は不要です。Production サンプル アプリケーションのディレクトリには、makefile が格納されています。この makefile により、クライアントとサーバ サンプル アプリケーションがビルドされます。

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

Windows

prompt>nmake -f makefilep.nt

UNIX

 


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

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

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

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

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

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

prompt>tmboot -y

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

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

prompt>tmshutdown

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

Production サンプル アプリケーションの CORBA C++ クライアント アプリケーションを起動するには、次の手順に従います。

  1. MS-DOS プロンプトで次のコマンドを入力します。
  2. prompt>univp_client

  3. 画面に「Enter student id:」と表示されたら、100001 ~ 100010 の任意の数値を入力します。
  4. Enter キーを押します。
  5. 画面に「Enter domain password:」と表示されたら、UBBCONFIG ファイルをロードしたときに定義したパスワードを入力します。
  6. Enter キーを押します。
注意 : Production サンプル アプリケーションの CORBA C++ クライアント アプリケーションは型ライブラリと同じように動作します。デフォルトでは、型ライブラリは \TUXDIR\TypeLibraries に格納されています。

 


Production サンプル アプリケーションをさらにスケーリングする方法

Production サンプル アプリケーションをさらにスケーリングするには、次の方法に従います。

注意 : データベースを使用する既存の CORBA アプリケーションに機能を追加する場合は、データベースがどのように設定されているかを考慮する必要があります。ファクトリ ベース ルーティングを使用している場合は、特に注意が必要です。たとえば、Production サンプル アプリケーションが 6 台のマシン間に分散している場合は、UBBCONFIG ファイルのルーティング テーブルに基づいて、適切に各マシンのデータベースを設定する必要があります。

  ページの先頭       前  次