この章では、標準のインターネット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: Unofficial connection from client at たとえば、ISL コマンドライン・オプション文字列(サーバー・アプリケーションのUBBCONFIG ファイル)で、ネットワーク・アドレスが//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"
For a detailed description of the CLOPT
command line options, see the ISL command in the Oracle Tuxedo Command Reference.
リスト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共同クライアント/サーバーであることが認識されます。
どちらのオブジェクト参照も、ルーティング・コードで検出され、アウトバウンド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
コマンドライン・オプションの詳細は、『Oracle Tuxedoコマンド・リファレンス』のISLコマンドを参照してください。