Oracle Tuxedo アプリケーションの設定

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

Oracle Tuxedo CORBA リモート クライアント アプリケーションの管理

この章では、標準のインターネット ORB 間プロトコル (IIOP : Internet Inter-ORB Protocol) を使用して Oracle Tuxedo CORBA のリモート クライアント アプリケーションから CORBA オブジェクトへの接続をコンフィグレーションする方法について説明します。この章は、Oracle Tuxedo CORBA サーバにのみ適用されます。

注意 : Oracle Tuxedo CORBA Java クライアントと Oracle Tuxedo CORBA Java クライアント ORB は Tuxedo 8.1 で非推奨になり、Tuxedo 9.x からサポートされなくなりました。Oracle Tuxedo CORBA Java クライアントと Oracle Tuxedo CORBA Java クライアント ORB のすべてのテキスト リファレンスや関連するサンプル コードは、以下の場合にのみ使用してください。
注意 : サード パーティの CORBA Java ORB のテクニカル サポートは、各ベンダによって提供されます。Oracle Tuxedo では、サード パーティの CORBA Java ORB に関する技術的なサポートやマニュアルは提供していません。

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

 


CORBA オブジェクト関連の用語

以下は、この章で使用する用語のリストです。

DLL

動的リンク ライブラリ (DLL : Dynamic Link Library)。ロード モジュールにグループ化された関数の集合。Windows アプリケーションでは、実行時に実行形式プログラムに動的にリンクされます。

IIOP

インターネット ORB 間プロトコル (IIOP : Internet Inter-ORB Protocol)。TCP/IP 準拠の通信プロトコルで、共通のバックボーン プロトコルとして CORBA 定義のメッセージ送受信をサポートします。

ISH

IIOP サーバ ハンドラ (ISH : IIOP Server Handler)。アプリケーション サイト上で実行されるクライアント プロセス。リモート クライアントの代理として機能します。

ISL

IIOP サーバ リスナ (ISL : IIOP Server Listener)。アプリケーション サイト上で実行されるサーバ プロセス。リモート クライアントの接続要求をリスンします。

サーバ

Oracle Tuxedo ドメインのマシンで管理されるサーバ。Oracle Tuxedo CORBA サーバは、Oracle Tuxedo CORBA の buildobjserver コマンドを使用して作成されます。CORBA サーバは、セキュリティ、トランザクション、オブジェクトの状態管理など、Oracle Tuxedo の機能を実装します。サーバは、Oracle Tuxedo ドメイン内外の任意のサーバを呼び出すことができます。

ネイティブ クライアント

Oracle Tuxedo ドメイン内のクライアント。CORBA ORB を使用して、Oracle Tuxedo ドメイン内外のオブジェクトを呼び出します。ネイティブ クライアントのホストには、Oracle Tuxedo の管理コンポーネントとインフラストラクチャ コンポーネントがあります。たとえば、tmadmin、FactoryFinder、ISL/ISH などです。ネイティブ クライアントは、環境オブジェクトを使用して CORBA オブジェクトにアクセスします。ネイティブ C++ クライアントは buildobjclient コマンドを使用して作成し、ネイティブ Java クライアントはサード パーティ ORB 提供のツールを使用して作成します。

リモート クライアント

Oracle Tuxedo ドメイン外のクライアント。リモート クライアントは、CORBA ORB を使用して、Oracle Tuxedo ドメイン内外のオブジェクトを呼び出すことができます。リモートクライアントのホストには、tmadmin、FactoryFinder、ISL/ISH など、Oracle Tuxedo の管理コンポーネントやインフラストラクチャ コンポーネントはなく、リモート クライアントがオブジェクトを呼び出すためのサポート ソフトウェア (CORBA ORB) があります。リモート クライアントは、環境オブジェクトを使用して CORBA オブジェクトにアクセスします。リモート C++ クライアントは buildobjclient コマンドを使用して作成し、リモート Java クライアントはサード パーティ ORB 提供のツールを使用して作成します。

ネイティブ共同クライアント/サーバ

(1) ビジネス上の処理のスタータとなるコードを実行し、(2) オブジェクトを呼び出すためのメソッド コードを実行する、という 2 つの目的を持つプロセス。共同クライアント/サーバは、Oracle Tuxedo ドメイン内にあります。ネイティブ共同 C++ クライアント/サーバは、buildobjclient コマンドを使用して作成します。Java ネイティブ共同クライアント/サーバはサポートされていません。
注意 : ネイティブ共同クライアント/サーバのサーバ ロールは、通常のサーバと比べて大幅に弱くなります。tmadmin、FactoryFinder、ISL/ISH などの Oracle Tuxedo CORBA の管理コンポーネントやインフラストラクチャ コンポーネントはなく (Oracle Tuxedo のスケーラビリティと信頼性に関する属性もなし)、Oracle Tuxedo の TP Framework も使用しないため、クライアントと ORB 間でより直接的な対話が必要になります。

リモート共同クライアント/サーバ

(1) ビジネス上の処理のスタータとなるコードを実行し、(2) オブジェクトを呼び出すためのメソッド コードを実行する、という 2 つの目的を持つプロセス。共同クライアント/サーバは、Oracle Tuxedo ドメイン外にあります。共同クライアント/サーバは Oracle Tuxedo TP Framework を使用しないので、クライアントと ORB 間でより直接的な対話が必要です。リモート共同 C++ クライアント/サーバは buildobjclient コマンドを使用して作成し、リモート Java クライアント/サーバはサード パーティ ORB 提供のツールを使用して作成します。
注意 : 共同クライアント/サーバは、サーバ ロールの一部としてクライアントの役割を果たすサーバとは異なります。サーバが呼び出し処理を完了すると、休止状態に戻ります。共同クライアント/サーバは常にアクティブ モードで動作し、サーバ ロールとは関連のないコードを実行します。このためサーバ ロールによって一時的にアクティブなクライアント ロールが中断されますが、クライアント ロールは常に再開されます。
注意 : リモート共同クライアント/サーバのサーバ ロールは、通常のサーバと比べて大幅に弱くなります。クライアントにもサーバにも、tmadmin、FactoryFinder、ISL/ISH など、Oracle Tuxedo の管理コンポーネントやインフラストラクチャ コンポーネントはありません (Oracle Tuxedo のスケーラビリティや信頼性に関する属性もなし)。

Oracle Tuxedo CORBA オブジェクト

TP Framework を使用して実装され、セキュリティ、トランザクション、およびオブジェクトの状態管理を実装する CORBA オブジェクト。CORBA オブジェクトは、Oracle Tuxedo CORBA サーバで実装されます。つまり、これらのオブジェクトは Oracle Tuxedo ドメインの一部であり、Oracle Tuxedo インフラストラクチャを使用します。

コールバック オブジェクト

対象オブジェクトでのクライアントの呼び出しで、パラメータとして提供される CORBA オブジェクト。対象オブジェクトは、その対象オブジェクトの実行時、または後で (対象オブジェクトの呼び出しが完了した後でも可) コールバック オブジェクトを呼び出すことができます。コールバック オブジェクトは、Oracle Tuxedo ドメイン内外のどちらにも配置できます。

 


CORBA リモート クライアントの概要

この節での「リモート クライアント」は、Oracle Tuxedo CORBA サーバ ソフトウェアがフル インストールされていないシステムにデプロイされた CORBA クライアント アプリケーションを意味します。つまり、管理サーバやアプリケーション サーバが実行されず、掲示板もないことを意味します。クライアントとアプリケーション間の通信は、すべてネットワーク経由で行われます。

クライアントのタイプは以下のとおりです。

クライアント プロセスは、UNIX または Microsoft Windows 上で実行できます。また、クライアントは CORBA ORB インタフェースにアクセスすることができます。ユーザは、呼び出しが背後のネットワークでどのように処理されているかを意識する必要はありません。クライアント プロセスはシステムに登録され、ネイティブ クライアントと同じ状態になります。

クライアントには以下の特徴があります。

注意 : クライアント プロセスは、ISH を通してネイティブ ドメインと通信します。

CORBA リモート クライアントが接続されたアプリケーションの例

図 15-1 は、リモート クライアントが接続されたアプリケーションの例です。リモート クライアントから CORBA サーバ アプリケーションへのアクセス要求は、ネットワーク経由で ISH に送信されます。このプロセスがアプリケーション サーバに要求を送信し、その応答をリモート クライアントに返します。

図 15-1 リモート クライアントが接続された銀行業務アプリケーション

リモート クライアントが接続された銀行業務アプリケーション

リモート クライアントからアプリケーションへの接続方法

クライアントは、既知のネットワーク アドレスを使用して IIOP リスナ/ハンドラで ISL プロセスに接続します。この接続は、クライアントが Bootstrap オブジェクトのコンストラクタを呼び出すと開始されます。ISL プロセスは、オペレーティング システム固有の機能を使用して、選択された ISH プロセスに直接接続を渡します。クライアント アプリケーション側から見ると、接続は 1 つだけです。クライアント アプリケーションは、現在 ISH プロセスに接続されていることを認識せず、また、認識する必要もありません。

 


CORBA リモート クライアントの環境変数を設定する

CORBA C++ クライアントでは、以下に示す環境変数を使用してシステムに情報を渡すことができます。

 


CORBA リモート クライアントの最大数を設定する

アプリケーションにリモート クライアントを参加させるには、UBBCONFIG ファイルの MACHINES セクションで MAXWSCLIENTS パラメータを指定する必要があります。

MAXWSCLIENTS に指定された値は、Oracle Tuxedo システムの起動時に通知され、リモート クライアント用に確保するアクセサ スロットの数が決まります。ネイティブ クライアントの場合、各アクセサ スロットに必要なセマフォは 1 つです。一方、ISH プロセス (リモート クライアントの代わりにネイティブ プラットフォーム上で実行するプロセス) は、リモート クライアントのアクセスを単一のアクセサ スロットに多重化するので、必要なセマフォは 1 つだけです。この点も、リモート機能の別の利点の 1 つです。多くのクライアントをネイティブ プラットフォームからリモート システムに移動することによって、アプリケーションで使用する IPC リソースを減らすことができます。

MAXWSCLIENTS は、MAXACCESSERS に指定された数のうち、指定された数のアクセサ スロットを使用します。MAXWSCLIENTS の設定時には、ネイティブ クライアントとサーバを収容するために必要な数のスロットを残しておく必要があります。MAXWSCLIENTSMAXACCESSERS より大きい値を指定しないでください。次の表は、MAXWSCLIENTS パラメータの説明です。

パラメータ
説明
MAXWSCLIENTS
マシンに接続するリモート クライアントの最大数を指定します。
デフォルト値は 0 です。この値を指定しないと、リモート クライアントから指定されたマシンに接続できません。
構文は MAXWSCLIENTS=number です。

 


CORBA リモート クライアントのリスナをコンフィグレーションする

リモート クライアントは、1 つの ISL プロセスと、1 つ以上の ISH プロセスのサービスを介してアプリケーションにアクセスします。ISL は、Oracle Tuxedo システム側で提供されるサーバとして、1 つのエントリで指定されます。ISL は複数のリモート クライアントを扱うことができます。これらのリモート クライアントは、唯一の通信ポイントである ISL を経由して特定のネットワーク アドレス (ISL コマンドラインで指定) のアプリケーションに接続します。リスナは、1 つまたは複数のリモート ハンドラ プロセスをスケジューリングします。ISH プロセスは、アプリケーションの管理ドメインで、リモート システム上のリモート クライアントの代理として機能します。ISH は多重化スキーマによって、複数のリモート クライアントを同時にサポートします。

リモート クライアントをアプリケーションに参加させるには、UBBCONFIG ファイルの SERVERS セクションで ISL プロセスを示す必要があります。この場合、サーバのリストと同じ構文を使用します。

CLOPT パラメータの形式

以下の ISL コマンドライン オプション (CLOPT) を使用して、リモート クライアントの ISL プロセスに情報を渡します。CLOPT パラメータの形式は、次のとおりです。

ISL SRVGRP=”identifier”
SRVID="number"
CLOPT="[ -A ] [ servopts options ] -- -n netaddr
[ -C {detect|warn|none} ]
[ -d device ]
[ -K {client|handler|both|none} ]
[ -m minh ]
[ -M maxh ]
[ -T client-timeout]
[ -x mpx-factor ]
[ -H external-netaddr"
CLOPT コマンドライン オプションの詳細については、『Tuxedo コマンド リファレンス』の ISL コマンドを参照してください。

 


CORBA リモート クライアントをサポートするようにコンフィグレーション ファイルを変更する

コード リスト 15-1 は、リモート クライアントをサポートする UBBCONFIG ファイルの例です。以下の特徴があります。

 


リモート共同クライアント/サーバのアウトバウンド IIOP をコンフィグレーションする

アウトバウンド IIOP のサポートにより、ネイティブ クライアントと、ネイティブ クライアントとして機能するサーバは、Oracle Tuxedo ドメイン外のリモート オブジェクト参照を呼び出すことができます。つまり、コールバックに登録されているリモート クライアントを呼び出して、リモート サーバ内のオブジェクトにアクセスすることができます。

アウトバウンド IIOP サポート コンポーネントと直接通信できるのは管理者だけです。管理者は、適切な起動パラメータを使用して ISL を起動し、接続が確立されていないクライアントのオブジェクトに対して、アウトバウンド IIOP を実行できるようにします。また、管理者は、起動する ISL の数や各種起動パラメータを調整し、システムの負荷状況に応じた最適なコンフィグレーションを行う必要もあります。

デフォルトのパラメータを使用して ISL を起動することも可能です。ただし、Oracle Tuxedo ISL のデフォルトの起動パラメータでは、IIOP のアウトバウンドを有効にできません。

注意 : アウトバウンド IIOP は、トランザクションおよびセキュリティ機能ではサポートされていません。

機能説明

クライアント コールバックをサポートするには、アウトバウンド IIOP のサポートが必要です。Oracle WebLogic Enterprise のバージョン 4.0 および 4.1 では、ISL/ISH はインバウンドのハーフ ゲートウェイでしたが、アウトバウンド IIOP のサポートにより、ISL/ISH にアウトバウンドのハーフ ゲートウェイが追加されています (図 15-2 を参照)。

ネイティブ サーバおよびリモート共同クライアント/サーバ アプリケーションでサポートされる GIOP のバージョンによって、以下に示す 3 種類のアウトバウンド IIOP 接続を使用できます。

双方向およびデュアルペア接続のアウトバウンド IIOP では、ISH に接続された共同クライアント/サーバに存在するオブジェクト参照へのアウトバウンド IIOP 接続が可能です。非対称のアウトバウンド IIOP では、ISH に接続された共同クライアント/サーバに存在しないオブジェクト参照へのアウトバウンド IIOP 接続が可能です。また、現在 ISH に接続されているクライアント上のオブジェクト参照だけでなく、任意のオブジェクト参照を Oracle Tuxedo CORBA クライアントによって呼び出すことができます。

以下の節では、それぞれのアウトバウンド IIOP について詳しく説明します。

図 15-2 サポートされる共同クライアント/サーバ IIOP 接続

サポートされる共同クライアント/サーバ IIOP 接続

双方向のアウトバウンド IIOP

双方向のアウトバウンド IIOP では、以下の操作が実行されます (図 15-3 を参照)。

  1. クライアントはオブジェクト参照を作成し、Oracle Tuxedo CORBA サーバを呼び出します。クライアント ORB は、サービス コンテキストを使用して、その接続が双方向であることを認識します。このサービス コンテキストは、メッセージと共に Oracle Tuxedo CORBA サーバに送信されます。
  2. オブジェクト参照のアンマーシャリングで、Oracle Tuxedo CORBA サーバはサービス コンテキストのホスト/ポートをオブジェクト参照のホスト/ポートと比較します。これらが一致すると、ORB によって ISH へのルーティングに必要な ISH クライアント情報が追加されます。このクライアント情報は、オブジェクト参照が Oracle Tuxedo CORBA サーバに渡される場合、常にオブジェクト参照と共に送信されます。
  3. 適切な時点で、Oracle Tuxedo CORBA サーバまたはネイティブ クライアントがオブジェクト参照を呼び出します。クライアント情報が指定されている場合、ルーティング コードによって適切な ISH が呼び出されます。
  4. ISH は、同じクライアント接続を使用して要求をクライアントに送信します。
  5. クライアントはメソッドを実行し、クライアント接続を使用して ISH に応答を返します。
  6. ISH は、応答を受信して Oracle Tuxedo CORBA サーバに転送します。
  7. 図 15-3 双方向接続


    双方向接続

非対称のアウトバウンド IIOP

非対称のアウトバウンド IIOP では、以下の操作が実行されます (図 15-4 を参照)。

  1. サーバは、ソースからオブジェクト参照を取得します。ネーミング サービスや string_to_object を取得したり、クライアントを介して取得することもできますが、クライアント自体に存在するものは対象外です。ISH に接続されたクライアントにはオブジェクト参照が存在しないため、双方向接続を使用して送信時呼び出しを行うことはできません。Oracle Tuxedo CORBA サーバがオブジェクト参照を呼び出します。
  2. 最初の呼び出しで、ルーティング コードによって ISL のサービスが呼び出され、ホスト/ポートに渡されます。
  3. ISL はアウトバウンド呼び出しを処理する ISH を選択し、ISH 情報を Oracle Tuxedo CORBA サーバに返します。
  4. Oracle Tuxedo CORBA サーバは ISH を呼び出します。
  5. ISH は、クライアントに対して要求を送信するときに使用する送信時接続を決定します。接続が確立されていない場合、ISH はホスト/ポートへの接続を作成します。
  6. クライアントがメソッドを実行し、ISH に応答を返します。
  7. ISH は、応答を受信して Oracle Tuxedo CORBA サーバに転送します。
  8. 図 15-4 非対称のアウトバウンド IIOP


    非対称のアウトバウンド IIOP

デュアルペア接続によるアウトバウンド IIOP

デュアルペア接続によるアウトバウンド IIOP では、以下の操作が実行されます (図 15-5 を参照)。

  1. クライアントは、オブジェクト参照を作成し、Bootstrap 関数 (register_callback_port) を呼び出して、オブジェクト参照を渡します。
  2. ISH が IOR からホスト/ポートを取得し、クライアント コンテキストに保存します。
  3. クライアントは Oracle Tuxedo CORBA サーバを呼び出してオブジェクト参照を渡します。register_callback_port 呼び出しによって、ISH がホスト/ポートを含むサービス コンテキストを作成します。このサービス コンテキストは、メッセージと共に Oracle Tuxedo CORBA サーバに送信されます。
  4. オブジェクト参照のアンマーシャリングで、Oracle Tuxedo CORBA サーバはサービス コンテキストのホスト/ポートをオブジェクト参照のホスト/ポートと比較します。これらが一致すると、ORB によって ISH クライアント情報がオブジェクト参照に追加されます。このクライアント情報は、オブジェクト参照が Oracle Tuxedo CORBA サーバに渡される場合、常にオブジェクト参照と共に送信されます。
  5. 適切な時点で、Oracle Tuxedo CORBA サーバまたはネイティブ クライアントがオブジェクト参照を呼び出します。ルーティング コードによって適切な ISH が呼び出され、クライアント情報が渡されます。
  6. ISH は、クライアントに対する 2 番目の接続を作成します。ISH は、この 2 番目の接続を使用してクライアントに要求を送信します。
  7. クライアントがメソッドを実行し、最初のクライアント接続を使用して ISH に応答を返します。
  8. ISH は、応答を受信して Oracle Tuxedo CORBA サーバに転送します。クライアントは ISH との最初の接続と 2 番目の接続を切断します。
  9. 図 15-5 デュアルペア接続によるアウトバウンド IIOP


    デュアルペア接続によるアウトバウンド IIOP

ルーティング コードによる ISL の検出

ISL の検出手順は以下のとおりです。

  1. 各 ISL でサービスが宣言されます。
  2. ルーティング コードによってサービス名が呼び出されます。
  3. 注意 : ISL の検出には通常の Oracle Tuxedo ルーティングが使用されます。
  4. 同じマシン上でアイドル状態の ISL が使用可能な場合は、その ISL が常に選択されます。アイドルの ISL が使用できない場合、NETLOAD は通常ローカル ISL が選択されていることを確認します。
  5. 注意 : ローカル マシン以外のマシンで ISL が呼び出される場合もあります。

 


ISL コマンドを使用してアウトバウンド IIOP のサポートをコンフィグレーションする

ネイティブな C++ または Java クライアント、ネイティブ クライアントとして動作するサーバからリモート オブジェクト参照を呼び出す場合は、アウトバウンド IIOP サポートを使用します。ルーティング コードでは、オブジェクト参照のソースが Oracle Tuxedo CORBA ORB 以外、またはリモートの Oracle Tuxedo CORBA 共同クライアント/サーバであることが認識されます。

オブジェクト参照の種類

リモート オブジェクト参照には、次の 2 つの種類があります。

どちらのオブジェクト参照も、ルーティング コードで検出され、アウトバウンド IIOP サポートに送信された後、処理されます。

ユーザ インタフェース

アウトバウンド IIOP サポートのユーザ インタフェースは、コマンドライン インタフェースであり、これを使用して ISL プロセスを起動します。Oracle Tuxedo ソフトウェアの今回のリリースでは、アウトバウンド IIOP 処理をコンフィグレーションするための新しいコマンドライン オプションが追加されています。これらのオプションを使用すると、ISH に接続されていないクライアントに存在するオブジェクト参照への非対称の IIOP 接続がサポートされます。

以下の ISL コマンド構文は、アウトバウンド IIOP をサポートする新しいオプションを示しています。

ISL SRVGRP="identifier"

SRVID="number"

CLOPT="[ -A ] [ servopts options ] -- -n netaddr
[ -C {detect|warn|none} ]
[ -d device ]
[ -K {client|handler|both|none} ]
[ -m minh ]
[ -M maxh ]
[ -T Client-timeout]
[ -x mpx-factor ]
[-H external-netaddr]
# アウトバウンド IIOP の新しいオプション
[-O]
[-o outbound-max-connections]
[-s Server-timeout]
[-u out-mpx-users] "

CLOPT コマンドライン オプションの詳細については、『Tuxedo コマンド リファレンス』の ISL コマンドを参照してください。


  ページの先頭       前  次