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

     前  次    新規ウィンドウで目次を開く  新規ウィンドウで索引を開く  PDFとして表示 - 新規ウィンドウ  Adobe Readerを取得 - 新規ウィンドウ
コンテンツはここから始まります

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

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

IIOP

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

ISH

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

ISL

IIOPサーバー・リスナー。アプリケーション・サイト上で実行されるサーバー・プロセス。リモート・クライアントの接続リクエストをリスニングします。

サーバー

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"
For a detailed description of the CLOPT command line options, see the ISL command in the Oracle Tuxedo Command Reference.

 


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番目の接続を作成します。それは、この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コマンドライン・オプションの詳細は、『Oracle Tuxedoコマンド・リファレンス』のISLコマンドを参照してください。


  先頭に戻る       前  次