|
この章では、標準のインターネット 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 に関する技術的なサポートやマニュアルは提供していません。 |
buildobjserver
コマンドを使用して作成されます。CORBA サーバは、セキュリティ、トランザクション、オブジェクトの状態管理など、Oracle Tuxedo の機能を実装します。サーバは、Oracle Tuxedo ドメイン内外の任意のサーバを呼び出すことができます。
tmadmin
、FactoryFinder、ISL/ISH などです。ネイティブ クライアントは、環境オブジェクトを使用して CORBA オブジェクトにアクセスします。ネイティブ C++ クライアントは buildobjclient
コマンドを使用して作成し、ネイティブ Java クライアントはサード パーティ ORB 提供のツールを使用して作成します。
tmadmin
、FactoryFinder、ISL/ISH など、Oracle Tuxedo の管理コンポーネントやインフラストラクチャ コンポーネントはなく、リモート クライアントがオブジェクトを呼び出すためのサポート ソフトウェア (CORBA ORB) があります。リモート クライアントは、環境オブジェクトを使用して CORBA オブジェクトにアクセスします。リモート C++ クライアントは buildobjclient
コマンドを使用して作成し、リモート Java クライアントはサード パーティ ORB 提供のツールを使用して作成します。
buildobjclient
コマンドを使用して作成します。Java ネイティブ共同クライアント/サーバはサポートされていません。
注意 : | ネイティブ共同クライアント/サーバのサーバ ロールは、通常のサーバと比べて大幅に弱くなります。tmadmin、FactoryFinder、ISL/ISH などの Oracle Tuxedo CORBA の管理コンポーネントやインフラストラクチャ コンポーネントはなく (Oracle Tuxedo のスケーラビリティと信頼性に関する属性もなし)、Oracle Tuxedo の TP Framework も使用しないため、クライアントと ORB 間でより直接的な対話が必要になります。 |
buildobjclient
コマンドを使用して作成し、リモート Java クライアント/サーバはサード パーティ ORB 提供のツールを使用して作成します。
注意 : | 共同クライアント/サーバは、サーバ ロールの一部としてクライアントの役割を果たすサーバとは異なります。サーバが呼び出し処理を完了すると、休止状態に戻ります。共同クライアント/サーバは常にアクティブ モードで動作し、サーバ ロールとは関連のないコードを実行します。このためサーバ ロールによって一時的にアクティブなクライアント ロールが中断されますが、クライアント ロールは常に再開されます。 |
注意 : | リモート共同クライアント/サーバのサーバ ロールは、通常のサーバと比べて大幅に弱くなります。クライアントにもサーバにも、tmadmin、FactoryFinder、ISL/ISH など、Oracle Tuxedo の管理コンポーネントやインフラストラクチャ コンポーネントはありません (Oracle Tuxedo のスケーラビリティや信頼性に関する属性もなし)。 |
この節での「リモート クライアント」は、Oracle Tuxedo CORBA サーバ ソフトウェアがフル インストールされていないシステムにデプロイされた CORBA クライアント アプリケーションを意味します。つまり、管理サーバやアプリケーション サーバが実行されず、掲示板もないことを意味します。クライアントとアプリケーション間の通信は、すべてネットワーク経由で行われます。
クライアント プロセスは、UNIX または Microsoft Windows 上で実行できます。また、クライアントは CORBA ORB インタフェースにアクセスすることができます。ユーザは、呼び出しが背後のネットワークでどのように処理されているかを意識する必要はありません。クライアント プロセスはシステムに登録され、ネイティブ クライアントと同じ状態になります。
注意 : | クライアント プロセスは、ISH を通してネイティブ ドメインと通信します。 |
図 15-1 は、リモート クライアントが接続されたアプリケーションの例です。リモート クライアントから CORBA サーバ アプリケーションへのアクセス要求は、ネットワーク経由で ISH に送信されます。このプロセスがアプリケーション サーバに要求を送信し、その応答をリモート クライアントに返します。
クライアントは、既知のネットワーク アドレスを使用して IIOP リスナ/ハンドラで ISL プロセスに接続します。この接続は、クライアントが Bootstrap オブジェクトのコンストラクタを呼び出すと開始されます。ISL プロセスは、オペレーティング システム固有の機能を使用して、選択された ISH プロセスに直接接続を渡します。クライアント アプリケーション側から見ると、接続は 1 つだけです。クライアント アプリケーションは、現在 ISH プロセスに接続されていることを認識せず、また、認識する必要もありません。
CORBA C++ クライアントでは、以下に示す環境変数を使用してシステムに情報を渡すことができます。
TUXDIR
- リモート クライアント上の Oracle Tuxedo CORBA クライアント ソフトウェアの場所。クライアントを接続するにはこの値が設定されていなければなりません。TOBJADDR
- クライアントがコンタクトする ISL のネットワーク アドレス。この値は、アプリケーションのコンフィグレーション ファイルで指定された ISL プロセスのアドレスと一致していなければなりません。注意 : | プログラマが Bootstrap コンストラクタまたは TOBJADDR で指定するネットワーク アドレスは、サーバ アプリケーションの UBBCONFIG ファイルのネットワーク アドレスと正確に一致する必要があります。アドレスの形式や、大文字/小文字も識別されます。これらのアドレスが一致しないと、Bootstrap コンストラクタの呼び出しが失敗し、一見無関係と思われる以下のエラー メッセージが表示されます。ERROR: クライアントからの非公式の接続 (アドレス <tcp/ip address>/<port-number>) です。 たとえば、サーバ アプリケーションの UBBCONFIG ファイルの ISL コマンドライン オプションで、ネットワーク アドレスが //TRIXIE:3500 に指定されている場合、Bootstrap コンストラクタまたは TOBJADDR で //192.12.4.6:3500 や //trixie:3500 を指定すると、接続が失敗します。UNIX システムでは、ホスト システムの uname -n コマンドを使用して大文字/小文字を指定します。Windows システムの場合は、ホスト システムの [コントロール パネル] の [ネットワーク] で大文字/小文字を指定してください。または、環境変数 COMPUTERNAME を使用します。次に例を示します。echo %COMPUTERNAME% |
アプリケーションにリモート クライアントを参加させるには、UBBCONFIG
ファイルの MACHINES
セクションで MAXWSCLIENTS
パラメータを指定する必要があります。
MAXWSCLIENTS
に指定された値は、Oracle Tuxedo システムの起動時に通知され、リモート クライアント用に確保するアクセサ スロットの数が決まります。ネイティブ クライアントの場合、各アクセサ スロットに必要なセマフォは 1 つです。一方、ISH プロセス (リモート クライアントの代わりにネイティブ プラットフォーム上で実行するプロセス) は、リモート クライアントのアクセスを単一のアクセサ スロットに多重化するので、必要なセマフォは 1 つだけです。この点も、リモート機能の別の利点の 1 つです。多くのクライアントをネイティブ プラットフォームからリモート システムに移動することによって、アプリケーションで使用する IPC リソースを減らすことができます。
MAXWSCLIENTS
は、MAXACCESSERS
に指定された数のうち、指定された数のアクセサ スロットを使用します。MAXWSCLIENTS
の設定時には、ネイティブ クライアントとサーバを収容するために必要な数のスロットを残しておく必要があります。MAXWSCLIENTS
に MAXACCESSERS
より大きい値を指定しないでください。次の表は、MAXWSCLIENTS
パラメータの説明です。
リモート クライアントは、1 つの ISL プロセスと、1 つ以上の ISH プロセスのサービスを介してアプリケーションにアクセスします。ISL は、Oracle Tuxedo システム側で提供されるサーバとして、1 つのエントリで指定されます。ISL は複数のリモート クライアントを扱うことができます。これらのリモート クライアントは、唯一の通信ポイントである ISL を経由して特定のネットワーク アドレス (ISL コマンドラインで指定) のアプリケーションに接続します。リスナは、1 つまたは複数のリモート ハンドラ プロセスをスケジューリングします。ISH プロセスは、アプリケーションの管理ドメインで、リモート システム上のリモート クライアントの代理として機能します。ISH は多重化スキーマによって、複数のリモート クライアントを同時にサポートします。
リモート クライアントをアプリケーションに参加させるには、UBBCONFIG
ファイルの SERVERS
セクションで ISL プロセスを示す必要があります。この場合、サーバのリストと同じ構文を使用します。
以下の 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 コマンドを参照してください。
コード リスト 15-1 は、リモート クライアントをサポートする UBBCONFIG
ファイルの例です。以下の特徴があります。
MACHINES
セクションでは、2 つのサイトでデフォルトの MAXWSCLIENTS
がオーバーライドされています。SITE1
ではデフォルト値が 150 に引き上げられ、SITE2
では 0 に引き下げられています。値 0 の場合は、リモート クライアントが接続されません。SERVERS
セクションには、BANKB1
グループの ISL プロセスが示されています。サーバ ID は 500 で、再起動可能と指定されています。-A
)。TRIXIE
でリスンします。-d
) です。-m
)。-M
)。-x
)。*MACHINES
SITE1
...
MAXWSCLIENTS=150
...
SITE2
...
MAXWSCLIENTS=0
...
*SERVERS
...
ISL SRVGRP=”BANKB1" SRVID=500 RESTART=Y
CLOPT=”-A -- -n //TRIXIE:2500 -d /dev/tcp
-m 5 -M 30 -x 5"
..
アウトバウンド 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 接続を使用できます。
注意 : | GIOP 1.2 は、Oracle WebLogic Enterprise リリース 4.2 (以降) と Oracle Tuxedo リリース 8.0 (以降) の C++ クライアント、サーバ、および共同クライアント/サーバでのみサポートされます。Oracle WebLogic Enterprise リリース 4.0 と 4.1 の C++ クライアントとサーバでは、GIOP のバージョン 1.0 と 1.1 はサポートしていますが、GIOP 1.2 はサポートしていません。Java クライアント、サーバ、および共同クライアント/サーバは、GIOP 1.0 のみサポートしています。 |
双方向およびデュアルペア接続のアウトバウンド IIOP では、ISH に接続された共同クライアント/サーバに存在するオブジェクト参照へのアウトバウンド IIOP 接続が可能です。非対称のアウトバウンド IIOP では、ISH に接続された共同クライアント/サーバに存在しないオブジェクト参照へのアウトバウンド IIOP 接続が可能です。また、現在 ISH に接続されているクライアント上のオブジェクト参照だけでなく、任意のオブジェクト参照を Oracle Tuxedo CORBA クライアントによって呼び出すことができます。
以下の節では、それぞれのアウトバウンド IIOP について詳しく説明します。
双方向のアウトバウンド IIOP では、以下の操作が実行されます (図 15-3 を参照)。
非対称のアウトバウンド IIOP では、以下の操作が実行されます (図 15-4 を参照)。
string_to_object
を取得したり、クライアントを介して取得することもできますが、クライアント自体に存在するものは対象外です。ISH に接続されたクライアントにはオブジェクト参照が存在しないため、双方向接続を使用して送信時呼び出しを行うことはできません。Oracle Tuxedo CORBA サーバがオブジェクト参照を呼び出します。
デュアルペア接続によるアウトバウンド IIOP では、以下の操作が実行されます (図 15-5 を参照)。
register_callback_port
) を呼び出して、オブジェクト参照を渡します。 register_callback_port
呼び出しによって、ISH がホスト/ポートを含むサービス コンテキストを作成します。このサービス コンテキストは、メッセージと共に Oracle Tuxedo CORBA サーバに送信されます。
ネイティブな C++ または Java クライアント、ネイティブ クライアントとして動作するサーバからリモート オブジェクト参照を呼び出す場合は、アウトバウンド IIOP サポートを使用します。ルーティング コードでは、オブジェクト参照のソースが Oracle Tuxedo CORBA ORB 以外、またはリモートの Oracle Tuxedo CORBA 共同クライアント/サーバであることが認識されます。
リモート オブジェクト参照には、次の 2 つの種類があります。
どちらのオブジェクト参照も、ルーティング コードで検出され、アウトバウンド IIOP サポートに送信された後、処理されます。
アウトバウンド IIOP サポートのユーザ インタフェースは、コマンドライン インタフェースであり、これを使用して ISL プロセスを起動します。Oracle Tuxedo ソフトウェアの今回のリリースでは、アウトバウンド IIOP 処理をコンフィグレーションするための新しいコマンドライン オプションが追加されています。これらのオプションを使用すると、ISH に接続されていないクライアントに存在するオブジェクト参照への非対称の IIOP 接続がサポートされます。
以下の ISL コマンド構文は、アウトバウンド IIOP をサポートする新しいオプションを示しています。
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 コマンドを参照してください。