CORBAネーム・サービスの使用

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

Oracle Tuxedoネームスペースの管理

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

注意: 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に関する技術的なサポートやドキュメントは提供していません。

 


CORBAネーム・サービスのインストール

Oracle Tuxedoをインストールするときに、CORBAネーム・サービスをインストールします。Oracle Tuxedoのインストールの詳細は、『Oracle Tuxedoシステムのインストール』を参照してください。

 


CORBAネーム・サービスのサーバー・プロセスの起動

CORBAネーム・サービスのサーバー・プロセスを起動するには、使用しているOracle Tuxedo CORBAアプリケーションのUBBCONFIGファイルでサーバー・プロセスを定義する必要があります。CORBAネーム・サービスのサーバー・プロセスを起動するには、cnsコマンドを使用します。UBBCONFIGファイルのCLOPTパラメータの後に、cnsコマンドライン・オプションを入力します。Oracle Tuxedoドメインごとに実行されるCORBAネーム・サービスのサーバー・プロセスは1つだけです。リスト3-1は、CORBAネーム・サービスのサーバー・プロセスに対するUBBCONFIGエントリの例です。

リスト3-1 CORBAネーム・サービスのUBBCONFIGファイル・エントリ
...
#
#Server process for Oracle Tuxedo CORBA Name Service
#
       cns
              SRVGRP = SYS_GRP
              SRVID = 6
              RESTART = N
       CLOPT = "-A -- -f C:\cnsroot.dat -M 0"

cnsコマンドとそのオプションの詳細は、CORBAネーム・サービス・リファレンスを参照してください。構成ファイルの作成の詳細は、Oracle Tuxedoオンライン・ドキュメントの『Oracle Tuxedoアプリケーションの設定』を参照してください。

CORBAネーム・サービスのサーバー・プロセスを起動すると、ネームスペースの内容を表示し、ネームスペース内のオブジェクトを管理するために、表3-1のコマンドを使用できます。コマンドとオプションの詳細は、「CORBAネーム・サービス・リファレンス」を参照してください。

表3-1 Oracle Tuxedoネームスペースを管理するためのコマンド
コマンド
説明
cns
Oracle Tuxedoネームスペースのサーバー・プロセスを起動します。
cnsbind
アプリケーション・オブジェクトおよびネーミング・コンテキストをOracle Tuxedoネームスペースにバインドします。
cnsls
Oracle Tuxedoネームスペースの内容を表示します。
cnsunbind
Oracle Tuxedoネームスペースのバインディングを解除します。

 


ネームスペースの永続化

CORBAネーム・サービスは、ネームスペース内に情報のコピーを2つ保持します。1つはメモリー内に保持されます。このコピーにアクセスすると、高速化および名前解決の最適化が可能になります。もう1つのコピーは、必要に応じて永続ストレージに保存されます。このコピーでは、ネームスペースの状態と構造の保存および復元が可能になります。

ネームスペースの永続化する主な目的は、ネームスペースの現在実行中のインスタンスによって保持されるメモリー内のネーミング情報を現在の状態にしておくことです。ネームスペースの永続コピーを保持することで、CORBAネーム・サービスは、サーバー・プロセスが終了した場合に現在のネーミング情報を再作成できます。永続ストレージ・ファイルを読み取り、最後に記録されたネーミング情報を再作成するように、CORBAネーム・サービスのサーバー・プロセスの新しいインスタンスを構成できます。

ネームスペースの永続コピーを作成し、そのコピーをファイルに保存するには、CORBAネーム・サービスのサーバー・プロセスの起動時にcnsコマンドの-pオプションを指定します。CORBAネーム・サービスは、指定した場所と名前で永続ストレージ・ファイルを作成します。

-pオプションで指定した永続ストレージ・ファイルがすでに存在する場合は、ファイルがオープンされ、処理されます。永続ストレージ・ファイルのバックアップは、CORBAネーム・サービスのサーバー・プロセスが開始される前に作成されます。永続ストレージ・ファイルのバックアップ・コピーの名前は、filename.BAKです。永続ストレージ・ファイルの名前を再利用する場合、既存の永続ストレージ・ファイルを削除または移動し、CORBAネーム・サービスのサーバー・プロセスを再起動する必要があります。

永続ストレージ・ファイルが正常に作成された場合、ファイルのエントリがULOGファイルに書き込まれます。エントリは、ディレクトリの場所とファイル名、ファイルが新しく作成されたかどうか、およびファイル名の決定に使用するメカニズム(指定、環境、デフォルトなど)を示します。永続ストレージ・ファイルの作成時にエラーが発生すると、発生したエラーのタイプを示すエントリがULOGファイルに書き込まれます。

CORBAネーム・サービスのサーバー・プロセスは、起動時に永続ストレージ・ファイルからネームスペースの構造を再作成するので、起動時間は、永続ストレージ・ファイルのサイズに比例します。サイズが数百メガバイト単位の大きな永続ストレージ・ファイルの場合、CORBAネーム・サービスのサーバー・プロセスが起動時にネームスペースを再作成するのに数秒または数分かかる場合もあります。

 


永続ストレージ・ファイルの圧縮

永続ストレージ・ファイルは、ネームスペースのメモリー内コピーに影響するすべてのオペレーションに関する情報を格納します。永続ストレージ・ファイルは、現在のネームスペースの構造と状態の再作成に必要とする以上の情報を格納することがあります。ネームスペースの構造が同じサイズのままでも、永続ストレージ・ファイルのサイズは非常に大きくなることがあります。

CORBAネーム・サービスでは、永続ストレージ・ファイルを圧縮して不要な情報を削除できます。cnsコマンドの-cオプションは、永続ストレージ・ファイルの圧縮を制御します。圧縮オプションは、現在の情報を処理して、新しく圧縮された永続ストレージ・ファイルを作成します。

CORBAネーム・サービスのサーバー・プロセスが起動されたときに、圧縮オペレーションは以下を実行します。

  1. メモリー内のネームスペースの構造を処理します。
  2. 既存の永続ストレージ・ファイルを上書きします。
  3. アンバインド、再バインド、または破棄オペレーションによってネームスペースから削除されたすべてのバインドおよび再バインド・エントリを削除します。
  4. バインドされていないバインディングをすべて削除します。バインドされていないバインディングは、バインディングが関連付けられているオブジェクトがネームスペースから削除されてもネームスペース内に残っているバインディングです。バインドされていないバインディングは、ネーミング・コンテキストが親コンテキストからアンバウンドされた状態でCosNaming::NamingContext::destroy()メソッドを実行したときに発生します。

-cオプションは、cnsコマンドの-pオプションが指定されている場合にのみ使用できます。cnsコマンドの-cオプションの詳細は、「CORBAネーム・サービス・リファレンス」を参照してください。

 


関連付けのないNamingContextオブジェクトの削除

関連付けのないコンテキストは、ほかのどのオブジェクトにもバインドされていないコンテキストです。このコンテキストは、一度もバインドされていない可能性もありますし、コンテキストにバインドされた後で明示的に、または再バインドによって破棄された可能性もあります。CORBAネーム・サービスでは、関連付けのないNamingContextオブジェクトは、以下のいずれかの方法で作成されます。

NamingContextオブジェクトに連合されているクライアント・アプリケーションとほかのネームスペースは、NamingContextオブジェクトへのオブジェクト参照が保持されているかぎり、関連付けのないNamingContextオブジェクトのオペレーションを実行できます。

ネームスペースの現在の実装は、関連付けのないNamingContextオブジェクトを、特殊なLostandFoundContextオブジェクトの形式で保持します。

cnsコマンドの-dオプションを使用して、関連付けのないNamingContextオブジェクトをネームスペースから削除します。-dオプションは、関連付けがないと認識されたすべてのNamingContextオブジェクトをアンバインドして破棄します。

-dオプションは、cnsコマンドの-pオプションが指定されている場合にのみ使用できます。cnsコマンドの-dオプションの詳細は、「CORBAネーム・サービス・リファレンス」を参照してください。

 


ネームスペースのフェデレーション

CORBAネーム・サービスは、論理ネームスペースの要素が別の複数のリモート・マシンに存在することを意味する連合型ネームスペースの概念をサポートします。連合型ネームスペースでは、あるネームスペースで保持されているNamingContextオブジェクトへのオブジェクト参照を使用して、別のネームスペースにNamingContextオブジェクトをバインドできます。CORBAネーム・サービスは、サード・パーティのネーム・サービスに加えて、ほかのマシンで動作しているCORBAネーム・サービスのインプリメンテーションとのフェデレーション(連合)をサポートします。CORBAネーム・サービスがサード・パーティのネーム・サービスと連合するには、サード・パーティのネーム・サービスは、Object Management Group (OMG)のインターオペラブル・ネーム・サービス(INS)仕様で指定した命名形式をサポートしている必要があります。

以下のトピックでは、サード・パーティのネーム・サービスとのフェデレーション加えて、インバウンド・フェデレーションとアウトバウンド・フェデレーションをサポートする方法について説明します。

インバウンド・フェデレーション

インバウンド・フェデレーションは、ローカルのOracle Tuxedoネームスペースに存在するNamingContextオブジェクトをリモート・ネーム・サービスにバインドする機能です。ネームスペースが連合されると、リモート・ネーム・サービスは、Oracle Tuxedoネームスペース内のNamingContextオブジェクトのオペレーションを実行できます。サード・パーティのネーム・サービスとのインバウンド・フェデレーションには、インターネットORB間プロトコル(IIOP)を使用します。したがって、非公式のIIOP接続をサポートするように、CORBAネーム・サービスのIIOPリスナー/ハンドラを構成する必要があります。

IIOPリスナー/ハンドラで非公式の接続を有効化するには、ISLコマンドの-Cパラメータを使用します。-Cパラメータは、非公式の接続が確立されたときにIIOPリスナー/ハンドラがどのように動作するかを決定します。インバウンド・フェデレーションを使用するには、-Cパラメータに対してwarnまたはnone値を指定します。warn値を指定すると、IIOPリスナー/ハンドラは、非公式の接続が検出されたときにメッセージをユーザー・ログ例外に記録します。例外は発生しません。none値を指定すると、IIOPリスナー/ハンドラは非公式の接続を無視します。ISLコマンドの詳細は、Oracle Tuxedoオンライン・ドキュメントの『Oracle Tuxedoコマンド・リファレンス』を参照してください。

リスト 3-2は、インバウンド・フェデレーションをサポートするIIOPリスナー/ハンドラに対するUBBCONFIGエントリの例です。

リスト3-2 インバウンド・フェデレーションをサポートするIIOPリスナー/ハンドラに対するUBBCONFIGファイルのエントリ
#                                       
# Entry to start IIOP Listener/Handler
# that supports inbound federation

ISL
              SRVGRP = SYS_GRP
              SRVID  = 5
              MIN   = 1
              MAX    = 1
              CLOPT   = "-A -- -n //blotto:2470 – C none"

アウトバウンド・フェデレーション

アウトバウンド・フェデレーションは、リモート・ネーム・サービスに存在するNamingContextオブジェクトをCORBAネーム・サービスのネームスペースにバインドする機能です。アウトバウンド・フェデレーションを使用すると、CORBAネーム・サービスを使用し、このNamingContextオブジェクトに対してオペレーションを実行できます。サード・パーティのネーム・サービスとのアウトバウンド・フェデレーションには、IIOPを使用します。したがって、アウトバウンド・フェデレーションをサポートするように、CORBAネーム・サービスのIIOPリスナー/ハンドラを構成する必要があります。

IIOPリスナー/ハンドラでアウトバウンド・フェデレーションを有効化するには、ISLコマンドの-Oパラメータを使用します。-Oパラメータを使用すると、IIOPハンドラに接続されていないサーバー・アプリケーション内のオブジェクトに対するアウトバウンドIIOP呼出しがIIOPリスナーで可能になります。ISLコマンドの詳細は、Oracle Tuxedoオンライン・ドキュメントの『Oracle Tuxedoコマンド・リファレンス』を参照してください。

リスト 3-3は、インバウンド・フェデレーションをサポートするIIOPリスナー/ハンドラに対するUBBCONFIGエントリの例です。

リスト3-3 アウトバウンド・フェデレーションをサポートするIIOPリスナー/ハンドラに対するUBBCONFIGファイルのエントリ
#                                       
# Entry for IIOP Listener/Handler
# that supports outbound federation
#
ISL   
              SRVGRP = SYS_GRP
              SRVID  = 5
              MIN   =1
              MAX    = 1
              CLOPT   = "-A -- -n //blotto:2470 -O"

複数のOracle Tuxedoドメイン間のフェデレーション

異なるOracle Tuxedoドメインで実行されている複数のCORBAネーム・サービスのサーバー・プロセス間のフェデレーションでは、ドメイン間接続を可能にするためにドメイン・ゲートウェイを使用する必要があります。ドメイン・ゲートウェイの構成の詳細は、管理トピックの「複数のドメインの構成(Oracle Tuxedoシステム)」の項を参照してください。

 


バインディング・イテレータの管理

OMG INS仕様では、未処理のバインディング・イテレータのコレクションが使用可能です。バインディング・イテレータではクライアント・アプリケーションによる明示的な破棄が必要なので、バインディング・イテレータを正しく削除できない場合があります。

未使用のバインディング・イテレータの数が増えたためにCORBAネーム・サービスがリソース不足になる可能性を最小限に抑えるには、cnsコマンドの-Mオプションを使用して、ネーム・サービスのバインディング・イテレータの最大数を設定します。この最大数に達すると、新しいバインディング・イテレータへのリクエストによって、未使用のバインディング・イテレータを破棄できるようになります。CORBAネーム・サービスは、使用履歴の最も古いアルゴリズムを基に、削除するバインディング・イテレータを選択します。

CORBAネーム・サービスのサーバー・プロセスが-Mオプションで開始された場合、CORBAネーム・サービスは、Oracle Tuxedo CORBAアプリケーションで使用中のバインディング・イテレータを破棄することがあるので、すべてのOracle Tuxedoアプリケーションは、バインディング・イテレータに対する呼出しに際してCORBA::OBJECT_NOT_EXISTシステム例外を処理できるようにする必要があります。

 


セキュリティで保護されたOracle TuxedoアプリケーションでのCORBAネーム・サービスの使用

セキュリティで保護されたOracle Tuxedo CORBAアプリケーションでcnslscnsbind、およびcnsunbindコマンドを使用する場合、Oracle TuxedoドメインのPrincipalAuthenticatorオブジェクトを取得し、適切なセキュリティ情報でそのドメインにログオンする必要があります。

セキュアなログオンを行えるように、Oracle Tuxedoドメインはセキュリティ・レベルTOBJ_SYSAUTHまたはTOBJ_APPAUTHで構成する必要があります。cnslscnsbindおよびcnsunbindコマンドのユーザー名はcnsutilsです。cnsutilsという名前のユーザーを作成するには、tpusraddコマンドを使用する必要があります。Oracle Tuxedoドメインに対して指定したセキュリティ・レベルに従って、UBBCONFIGファイルのUSER_AUTHおよびAPP_PW環境変数でユーザー・パスワードやドメイン・パスワードを定義できます。これらの環境変数が設定されてなく、Oracle TuxedoドメインにTOBJ_SYSAUTHまたはTOBJ_APPAUTHセキュリティ・レベルがある場合、cnslscnsbind、およびcnsunbindコマンドでは、パスワードを入力するように求められます。

セキュリティ・レベルの詳細、およびOracle Tuxedoセキュリティ環境でのユーザーの定義については、Oracle Tuxedoオンライン・ドキュメントの『CORBAアプリケーションにおけるセキュリティの使用』を参照してください。


  先頭に戻る       前  次