4.3.1 Bootstrapオブジェクトの機能
Bootstrapオブジェクトは、次のOracle Tuxedo CORBAインタフェースのオブジェクト参照にアクセスする必要のあるクライアントまたはサーバー・アプリケーションによって作成されます:
- FactoryFinder
- セキュリティ
- インタフェース・リポジトリ
- ネーミング・サービス
- 通知サービス
- Tobj_SimpleEventsサービス
- トランザクション
Bootstrapオブジェクトは、IIOPリスナー/ハンドラのアドレスの形式によっては特定のOracle Tuxedoドメインへの最初の接続を表す場合があります。NULLスキームUniversal Resource Locator (URL)形式が使用される場合に(バージョン5.1以前のOracle WebLogic EnterpriseリリースとOracle Tuxedoリリース8.0でサポートされている唯一のアドレス形式)、Bootstrapオブジェクトは最初の接続を表します。ただし、このURL形式が使用される場合は、Bootstrapオブジェクトが作成されるまで接続は行われません。アドレス形式と接続回数の詳細は、「Tobj_Bootstrap」を参照してください。
Oracle Tuxedo CORBAリモート・クライアントについては、BootstrapオブジェクトはOracle Tuxedo IIOPリスナー/ハンドラのホストとポートを使用して作成されます。しかし、Oracle Tuxedoネイティブのクライアント・アプリケーションとサーバー・アプリケーションでは、ホストとポートを指定する必要はありません(特定のOracle Tuxedoドメインで実行されるため)。IIOPリスナー/ハンドラのホストとポートIDは、Oracle Tuxedoドメインの構成情報に含まれています。
Bootstrapオブジェクトは、その作成後に、特定のOracle Tuxedoドメインにあるオブジェクトのオブジェクト参照に対するリクエストを満たします。異なるBootstrapオブジェクトを使用すると、アプリケーションで複数のドメインを使用できます。
Bootstrapオブジェクトを使用すると、次のオブジェクトの参照を取得できます:
- SecurityCurrent
SecurityCurrentオブジェクトは、Oracle Tuxedoドメイン内のセキュリティ・コンテキストを確立するために使用します。クライアントは、SecurityCurrentオブジェクトの
principal_authenticator属性からPrincipalAuthenticatorを取得できます。 - TransactionCurrent
TransactionCurrentオブジェクトは、Oracle Tuxedoトランザクションに参加するために使用します。基本的な操作は以下の通りです。
- 開始
トランザクションを開始します。以降の操作は、このトランザクションのスコープ内で発生します。
- コミット
トランザクションを終了します。このクライアント・アプリケーションですべての操作が正常に終了しています。
- ロールバック
トランザクションを中断します。ほかのすべての参加リソースにロールバックを指示します。
- 一時停止
現在のトランザクションの参加を一時停止します。この操作は、トランザクションを示すオブジェクトを返し、クライアント・アプリケーションが後でトランザクションを再開できるようにします。
- 再開
指定したトランザクションの参加を再開します。
- 開始
- FactoryFinder
FactoryFinderオブジェクトは、ファクトリを取得するために使用します。Oracle Tuxedoシステムで、ファクトリはアプリケーション・オブジェクトを作成するために使用します。FactoryFinderでは、次のような方法でファクトリを検索できます。
- ファクトリ・オブジェクト参照と一致する利用可能なすべてのファクトリのリストを取得します(
find_factories) idと種類で構成される名前コンポーネントと一致するファクトリを取得します(find_one_factory)。- 特定の種類の利用可能な最初のファクトリを取得します(
find_one_factory_by_id)。 - 特定の種類の利用可能なすべてのファクトリのリストを取得します(
find_factories_by_id)。 - 登録されているすべてのファクトリのリストを取得します(
list_factories)。
- ファクトリ・オブジェクト参照と一致する利用可能なすべてのファクトリのリストを取得します(
- InterfaceRepository
インタフェース・リポジトリには、Oracle Tuxedoドメイン内で実装されるCORBAオブジェクトのインタフェース記述が含まれています。動的起動インタフェース(DII)を使用するクライアントでは、インタフェース・リポジトリのリファレンスがないとCORBAリクエストの構造体を構築できません。
- NamingService
NamingServiceオブジェクトは、ルート・ネームスペースのリファレンスを取得するために使用します。このオブジェクトを使用すると、ORBはネームスペースのルートを検索します。
- NotificationService
NotificationServiceオブジェクトは、CosNotificationサービス内のイベント・チャネル・ファクトリ(CosNotifyChannelAdmin::EventChannelFactory)のリファレンスを取得するために使用します。Oracle Tuxedoシステムで、EventChannelFactoryは通知サービス・チャネルの検索に使用します。
- Tobj_SimpleEventsService
Tobj_SimpleEventsServiceオブジェクトは、Oracleシンプル・イベント・サービス内のイベント・チャネル・ファクトリ(Tobj_SimpleEvents::ChannelFactory)のリファレンスを取得するために使用します。Oracle Tuxedoシステムで、ChannelFactoryはOracleシンプル・イベント・サービス・チャネルの検索に使用します。
ブートストラップ処理メカニズムを使用すると、次の6種類のリファレンスを取得できます:
- SecurityCurrent
SecurityCurrentオブジェクトは、Oracle Tuxedoドメイン内のセキュリティ・コンテキストを確立するために使用します。クライアントは、SecurityCurrentオブジェクトのprincipal_authenticator属性からPrincipalAuthenticatorを取得できます。
- TransactionCurrent
TransactionCurrentオブジェクトは、Oracle Tuxedoトランザクションに参加するために使用します。基本的な操作は以下の通りです。
- 開始
トランザクションを開始します。以降の操作は、このトランザクションのスコープ内で発生します。
- コミット
トランザクションを終了します。このクライアント・アプリケーションですべての操作が正常に終了しています。
- ロールバック
トランザクションを中断します。ほかのすべての参加リソースにロールバックを指示します。
- 一時停止
現在のトランザクションの参加を一時停止します。この操作は、トランザクションを示すオブジェクトを返し、クライアント・アプリケーションが後でトランザクションを再開できるようにします。
- 再開
指定したトランザクションの参加を再開します。
- 開始
- FactoryFinder
FactoryFinderオブジェクトは、ファクトリを取得するために使用します。Oracle Tuxedo CORBAで、ファクトリはアプリケーション・オブジェクトを作成するために使用します。FactoryFinderでは、次のような方法でファクトリを検索できます。
- ファクトリ・オブジェクト参照と一致する利用可能なすべてのファクトリのリストを取得します(find_factories)。
- idと種類で構成される名前コンポーネントと一致するファクトリを取得します(find_one_factory)。
- 特定の種類の利用可能な最初のファクトリを取得します(find_one_factory_by_id)。
- 特定の種類の利用可能なすべてのファクトリのリストを取得します(find_factories_by_id)。
- 登録されているすべてのファクトリのリストを取得します(list_factories)。
- InterfaceRepository
インタフェース・リポジトリには、Oracle Tuxedoドメイン内で実装されるCORBAオブジェクトのインタフェース記述が含まれています。動的起動インタフェース(DII)を使用するクライアントでは、インタフェース・リポジトリのリファレンスがないとCORBAリクエストの構造体を構築できません。ActiveXクライアントは、この特殊なケースです。内部的に、COM/IIOPブリッジの実装ではDIIを使用するため、デスクトップ・クライアントにとって透過的であっても、インタフェース・リポジトリへの参照を取得する必要があります。
- NotificationService
NotificationServiceオブジェクトは、CosNotificationサービス内のイベント・チャネル・ファクトリ(CosNotifyChannelAdmin::EventChannelFactory)のリファレンスを取得するために使用します。Oracle Tuxedo CORBAで、EventChannelFactoryは通知サービス・チャネルの検索に使用します。
- Tobj_SimpleEventsService
Tobj_SimpleEventsServiceオブジェクトは、Oracleシンプル・イベント・サービス内のイベント・チャネル・ファクトリ(Tobj_SimpleEvents::ChannelFactory)のリファレンスを取得するために使用します。Oracle Tuxedo CORBAで、ChannelFactoryはOracleシンプル・イベント・サービス・チャネルの検索に使用します。
FactoryFinderオブジェクトとインタフェース・リポジトリ・オブジェクトは、環境オブジェクト・ライブラリで実装されません。しかし、それらのオブジェクトはOracle Tuxedoドメインに固有であり、したがって概念的にはSecurityCurrentオブジェクトおよびTransactionCurrentオブジェクトと似ています。
Bootstrapオブジェクトは、クライアント・アプリケーションとOracle Tuxedoドメインの間の関連付け(セッション)を意味します。この関連付けのコンテキストで、BootstrapオブジェクトはほかのCurrentオブジェクト(SecurityCurrentとTransactionCurrent)との包含関係を強制します。Currentオブジェクトは、このドメインの範囲内で、Bootstrapオブジェクトが存在している間のみ有効です。
ノート:
新しいURLアドレス形式(corbaloc://hostname:port_number)を使用している場合のSecurityCurrentの解決はローカルの処理です。つまり、クライアントからIIOPリスナー/ハンドラへの接続は行われません。
また、クライアントでは各Currentオブジェクトにつきインスタンスは1つしか利用できません。Currentオブジェクトが既に存在する場合でも、新たなCurrentオブジェクトの作成が失敗することはありません。失敗するのではなく、既存のオブジェクトのもう1つのリファレンスが渡されます。つまり、クライアント・アプリケーションはCurrentオブジェクトの単一インスタンスの複数のリファレンスを持つことになります。
Currentオブジェクトの新しいインスタンスを作成するには、まずBootstrapオブジェクトのdestroy_current()メソッドを呼び出す必要があります。この呼出しですべてのCurrentオブジェクトが無効になりますが、Oracle Tuxedoドメインとのセッションは破棄されません。destroy_current()を呼び出した後は、既存のBootstrapオブジェクトを使用してOracle Tuxedoドメイン内でCurrentオブジェクトの新しいインスタンスを作成できます。
別のドメインのCurrentオブジェクトを取得するには、別のBootstrapオブジェクトを作成する必要があります。同時に複数のBootstrapオブジェクトを持つこともできますが、「アクティブ」にできる(Currentオブジェクトを関連付けることができる)のは1つのBootstrapオブジェクトだけです。したがって、アプリケーションでは「アクティブ」なBootstrapオブジェクトのdestroy_current()を呼び出してから別のBootstrapオブジェクト(アクティブなBootstrapオブジェクトになる)の新しいCurrentオブジェクトを取得する必要があります。
ノート:
複数のドメインのオブジェクトにアクセスする必要がある場合は、オブジェクトをローカル・ドメインにインポートするか、複数のドメインにアクセスするようにアプリケーションを構成します。マルチ・ドメイン構成の詳細は、『Oracle Tuxedo Domainsコンポーネントの使用』の「複数のCORBA Domainsの構成」を参照してください。サーバーとネイティブ・クライアントはOracle Tuxedoドメインの中に存在します。したがって、「セッション」は確立されません。ただし、同じ包含関係が強制されます。サーバーとネイティブ・クライアントは、//host:portではなく空の文字列を指定してそれらが含まれているドメインにアクセスします。
ノート:
Bootstrapオブジェクトを使用する場合、クライアント・アプリケーションとサーバー・アプリケーションではORB::resolve_initial_references()メソッドではなくTobj_Bootstrap::resolve_initial_references()メソッドを使用する必要があります。
親トピック: Oracleブートストラップ処理メカニズム