![]() |
![]() |
![]() |
![]() |
![]() |
この章では、Oracle Tuxedo製品のCORBA環境でサポートされるクライアント・アプリケーションのタイプと、CORBAクライアント・アプリケーションの開発前に理解しておく必要がある概念について説明します。
•
•
•
注意: サポートされるソフトウェアの具体的なバージョンは、『Oracle Tuxedoシステムのインストール』を参照してください。Oracle Tuxedoソフトウェアは、『The Common Object Request Broker:Architecture and Specification, Version 2.3』に準拠しています。OMG IDLからC++へのマッピングの詳細は、「The Common Object Request Broker:Architecture and Specification, Version 2.3」を参照してください。Oracle Tuxedoソフトウェアは、『The Common Object Request Broker:Architecture and Specification, Version 2.2』に準拠しています。OMG IDLとJavaのマッピングの詳細は、「The Common Object Request Broker:Architecture and Specification, Version 2.2」を参照してください。Oracle Tuxedoソフトウェアは、『The Common Object Request Broker:Architecture and Specification, Version 2.3』に定義されているOMG IDLとCOMのマッピングに準拠しています。OMG IDLとCOMのマッピングの詳細は、「The Common Object Request Broker:Architecture and Specification, Version 2.3」を参照してください。静的起動を使用する場合、CORBAクライアント・アプリケーションはクライアント・スタブ上で直接操作を呼び出します。静的起動は、最も簡単かつ一般的なタイプの起動です。スタブはIDLコンパイラによって生成されます。静的起動は、呼び出す必要がある操作の詳細をコンパイル時に認識し、起動の同期的性質内で処理できるアプリケーションで推奨されます。図1-1に、静的起動を示します。図1-1 静的起動動的起動は、より複雑です。ただし、動的起動を使用すると、CORBAクライアント・アプリケーションはコンパイル時にCORBAオブジェクトのインタフェースを認識しなくてもCORBAオブジェクトの操作を呼び出すことができます。図1-2に、動的起動を示します。図1-2 動的起動動的起動を使用すると、CORBAクライアント・アプリケーションは、インタフェース・リポジトリに格納されているCORBAオブジェクト・インタフェース用の操作リクエストを動的にビルドできます。CORBAサーバー・アプリケーションでは、動的起動リクエストを受け取って処理するために、特別な設計を必要としません。通常、動的起動はCORBAクライアント・アプリケーションで遅延同期通信が必要なときに使用されるか、または対話の性質が未定義の場合に動的クライアント・アプリケーションによって使用されます。動的起動の使用の詳細は、「動的起動インタフェースの使い方」を参照してください。CORBAクライアント・アプリケーションは、使用するインタフェースごとにスタブを持つ必要があります。idlコマンド(またはJava ORB製品の同等コマンド)を使用すると、CORBAインタフェースのOMG IDL定義からクライアント・スタブを生成できます。このコマンドにより、C++やJavaなどのプログラミング言語からクライアント・スタブを使用する場合に必要なすべてのものが定義されたスタブ・ファイルとヘッダー・ファイルが生成されます。このため、CORBAクライアント・アプリケーション内からメソッドを呼び出すだけで、CORBAオブジェクトの操作をリクエストできます。
• インタフェース・リポジトリの開発コマンドの詳細は、『Oracle Tuxedoコマンド・リファレンス』を参照してください。ドメインは、オブジェクトおよびサービスを管理エンティティとしてグループ化する方法です。Oracle Tuxedoドメインには、1つ以上のIIOPリスナー/ハンドラがあり、名前によって識別されます。異なるBootstrapオブジェクトを使用することで、1つのCORBAクライアント・アプリケーションが複数のOracle Tuxedoドメインに接続できます。Oracle Tuxedoドメインごとに、CORBAクライアント・アプリケーションはそのOracle Tuxedoドメイン内で提供されるサービス(トランザクション、セキュリティ、ネーミング、イベントなど)に対応するオブジェクトを取得できます。Oracle Tuxedoドメインで使用可能なBootstrapオブジェクトおよびCORBAサービスの詳細は、「環境オブジェクト」を参照してください。図1-3に、Oracle Tuxedoドメインの機能を示します。図1-3 Oracle Tuxedoドメインの機能
注意: サード・パーティ・クライアントORBでは、CORBA Interoperable Naming Service (INS)を使用してOracle Tuxedoドメイン内のサービスにアクセスすることもできます。詳細は、『CORBAプログラミング・リファレンス』のCORBA Bootstrapオブジェクト・プログラミング・リファレンスに関する項を参照してください。このOracle固有のオブジェクトは、CORBAクライアント・アプリケーションがトランザクションに参加できるようにします。TransactionCurrentオブジェクトは、CORBAサービスのオブジェクト・トランザクション・サービス(OTS)の実装を提供します。このCORBAオブジェクトを使用すると、CORBAクライアント・アプリケーションはCosNotificationサービス内のイベント・チャネル・ファクトリ(CosNotifyChannelAdmin::EventChannelFactory)の参照を取得できます。EventChannelFactoryは、通知サービス・チャネルの検索に使用されます。また、Tobj_SimpleEventsServiceオブジェクトも用意されています。このOracle固有のオブジェクトを使用すると、CORBAクライアント・アプリケーションはOracle固有のイベント・インタフェースの参照を取得できます。このイベント・インタフェースは、CosNotificationサービスで定義される標準の構造化されたイベントを受け渡しますが、APIは簡単に使用できるよう簡素化されています。
•
•
• CORBAクライアント・アプリケーションでは、IIOPリスナー/ハンドラのアドレスを定義するBootstrapオブジェクトが作成されます。IIOPリスナー/ハンドラは、Oracle Tuxedoドメインおよびドメインによって提供されるCORBAサービスへのアクセス・ポイントです。IIOPリスナー/ハンドラのリストは、パラメータとして提供されるか、TOBJADDR環境変数またはJavaプロパティを介して提供されます。1つのIIOPリスナー/ハンドラは、次のように指定されます。例: //myserver:4000Bootstrapオブジェクトがインスタンス化されると、resolve_initial_referencesメソッドが呼び出され、文字列IDが受け渡されて使用可能なオブジェクトの参照が取得されます。文字列IDの有効値は、FactoryFinder、Interface Repository、SecurityCurrent、TransactionCurrent、NotificationService、TObj_SimpleEventsService、およびNameServiceです。図1-4に、Oracle TuxedoドメインでのBootstrapオブジェクトの機能を示します。図1-4 Bootstrapオブジェクトの機能サード・パーティ・クライアントORBでは、CORBA Interoperable Naming Service (INS)メカニズムを使用して、Oracle Tuxedoドメインおよびそのサービスへのアクセスを取得することもできます。Interoperable Naming Serviceを使用すると、サード・パーティ・クライアントORBは、自身のresolve_initial_references()関数を使用してOracle Tuxedoドメインによって提供されるCORBAサービスにアクセスし、標準OMG IDLから生成されたスタブを使用してドメインから返されたインスタンスを処理できます。Interoperable Naming Serviceの使い方については、『CORBAプログラミング・リファレンス』を参照してください。CORBAクライアント・アプリケーションは、CORBAオブジェクトのオブジェクト参照をファクトリから取得します。ファクトリは、別のCORBAオブジェクトのオブジェクト参照を返し、自身をFactoryFinderオブジェクトに登録する任意のCORBAオブジェクトです。
1. Bootstrapオブジェクトが作成されると、resolve_initial_referencesメソッドが呼び出され、FactoryFinderオブジェクトの参照が取得されます。図1-5に、CORBAクライアント・アプリケーションとFactoryFinderオブジェクトの対話を示します。Oracle Tuxedoソフトウェアによって使用されるFactoryFinderオブジェクトは、CORBAサービス・ライフサイクル・サービスで定義されます。Oracle Tuxedoソフトウェアは、COS::LifeCycle::FactoryFinderインタフェースの拡張を実装します。これにより、クライアント・アプリケーションはFactoryFinderオブジェクトを使用してより簡単にファクトリを検索できるようになります。CORBAサービス・ライフサイクル・サービスは、CORBAサービス・ネーミング・サービスに定義された名前を使用して、COS::LifeCycle::FactoryFinderインタフェースを介してファクトリを検索するよう指定しています。これらの名前は一連のNameComponent構造で構成され、この構造はIDフィールドとkindフィールドで構成されています。CORBA名を使用したファクトリの検索は、クライアント・アプリケーションにとっては面倒です。数多くの呼出しを行って適切な名前構造をビルドし、CORBAネーム・サービス名を構築してCOS::LifeCycle::FactoryFinderインタフェースのfind_factoriesメソッドに渡す必要があるからです。また、メソッドは複数のファクトリを返す場合があるため、クライアント・アプリケーションは適切なファクトリの選択と不要なオブジェクト参照の破棄を行う必要があります。最も単純なアプリケーション設計は、CORBAクライアント・アプリケーションでTobj::FactoryFinder::find_one_factory_by_idメソッドを使用することで達成できます。このメソッドは、入力としてファクトリID用の単純な文字列を受け付け、1つのファクトリをCORBAクライアント・アプリケーションに返します。CORBAクライアント・アプリケーションは、名前コンポーネントを操作し、多くのファクトリから選択する必要がなくなります。Tobj::FactoryFinder::find_one_factory_by_idメソッドを使用するには、アプリケーション設計者はCORBAクライアント・アプリケーションが特定のCORBAオブジェクト・インタフェース用のファクトリを簡単に検索するために使用できるファクトリの命名規則を定義する必要があります。このネーミング・ルールでは、特定のタイプのCORBAオブジェクト・インタフェースのオブジェクト参照を提供するファクトリの複数のニーモニック型が定義されるのが理想的です。ファクトリは、これらの規則を使用して登録されます。たとえば、Studentオブジェクトのオブジェクト参照を返すファクトリであれば、StudentFactoryと呼ばれます。FactoryFinderオブジェクトへのファクトリの登録については、『CORBAサーバー・アプリケーションの作成』を参照してください。InterfaceRepositoryオブジェクトは、Oracle Tuxedoドメインのインタフェース・リポジトリに関する情報を返します。InterfaceRepositoryオブジェクトは、インタフェース・リポジトリのCORBA定義に基づいています。これは、『Common Request Broker Architecture and Specification Version 2.2』で定義されている適切なCORBAインタフェース・セットを提供します。動的起動インタフェース(DII)を使用するCORBAクライアント・アプリケーションは、インタフェース・リポジトリにプログラムでアクセスする必要があります。インタフェース・リポジトリにアクセスするための正確な手順は、CORBAクライアント・アプリケーションが特定のCORBAインタフェースに関する情報を検索するのか、またはあるインタフェースを見つけるためにインタフェース・リポジトリを参照するのかによって異なります。どちらの場合でも、CORBAクライアント・アプリケーションはインタフェース・リポジトリへの読込みのみを行うことができ、書込みは行うことができません。DIIを使用するCORBAクライアント・アプリケーションでInterfaceRepositoryオブジェクトを使用する方法の詳細は、「動的起動インタフェースの使い方」を参照してください。InterfaceRepositoryオブジェクトの詳細は、『CORBAプログラミング・リファレンス』を参照してください。
注意: CORBAクライアント・アプリケーションが認証を受けず、セキュリティ・レベルがTOBJ_NOAUTHの場合、Oracle TuxedoドメインのIIOPリスナー/ハンドラはそのIIOPリスナー/ハンドラに送信されるユーザー名とクライアント・アプリケーション名にCORBAクライアント・アプリケーションを登録します。クライアント・アプリケーションでのSecurityCurrentオブジェクトの使い方の詳細は、『CORBAアプリケーションにおけるセキュリティの使用』を参照してください。SecurityLevel1::Current インタフェースとSecurityLevel2::Currentインタフェースについては、『CORBAプログラミング・リファレンス』を参照してください。トランザクションは、インタフェース単位で使用されます。アプリケーション設計者は、設計時にCORBAアプリケーション内のどのインタフェースでトランザクションを処理するかを決定します。次に、各インタフェースのトランザクション・ポリシーを実装構成ファイル(ICF)に定義します。トランザクション・ポリシーは以下のとおりです。
• インタフェースはトランザクションに関与しません。このインタフェース用に作成されるオブジェクトは、トランザクションに関与できません。Oracle Tuxedoソフトウェアは、このポリシーが設定されているインタフェースがトランザクションに関与した場合に例外(INVALID_TRANSACTION)を生成します。
•
•
• インタフェースはトランザクションに関与しません。インタフェースはトランザクションの一部になることができますが、UBBCONFIGファイルでこのインタフェースに対して指定されたAUTOTRANポリシーが無視されます。CORBAクライアント・アプリケーションでのTransactionCurrentオブジェクトの使い方の詳細は、『CORBAトランザクションの使用』を参照してください。TransactionCurrentオブジェクトについては、『CORBAプログラミング・リファレンス』を参照してくださいNotificationServiceオブジェクトとTobj_SimpleEventsServiceオブジェクトは、CORBAイベント・サービスへのアクセスを提供します。Oracle Tuxedo製品のCORBA環境のイベント・サービスは、ATMI環境のEventBrokerのイベント・サービスとほぼ同じ機能を提供します。ただし、CORBAイベント・サービスは、プログラミング・モデルと、CORBAプログラマにとって自然なインタフェースを提供します。どちらのインタフェース・セットも、CORBA通知サービス仕様で定義される標準の構造化されたイベントを渡します。この2つのインタフェース・セットは、相互に互換性があります。このため、NotificationServiceインタフェースを使用してポストされたイベントをTobj_SimpleEventsServiceインタフェースでサブスクライブでき、その逆も可能です。NotificationServerオブジェクトとTobj_SimpleEventsServiceオブジェクトの使い方の詳細は、『CORBA通知サービスの使用』を参照してください。CORBAクライアント・アプリケーションでのNameServiceオブジェクトの使い方の詳細は、『CORBAネーム・サービスの使用』を参照してください。