Oracle Tuxedo CORBAのプログラミング環境
注意:
|
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に関する技術的なサポートまたはドキュメントは提供していません。
Oracle Tuxedo CORBAのプログラミング機能の概要
Oracle Tuxedoでは、分散オブジェクトの開発と管理を容易にする堅牢なCORBAプログラミング環境が提供されます。以下の項では、プログラミング環境の機能について説明します。
Oracle Tuxedo CORBAプログラミング環境では、CORBAオブジェクトの開発を容易にする次のようなインタフェース定義言語(IDL)コンパイラが提供されます。
•
|
idl - OMG IDLファイルをコンパイルし、C++で実装されるインタフェース定義で必要なクライアント・スタブ・ファイルとサーバー・スケルトン・ファイルを生成します。
|
表2-1は、Oracle Tuxedo CORBAプログラミング環境でCORBAアプリケーションの開発とインタフェース・リポジトリの管理のために用意されているコマンドのリストです。
表2-1
Oracle Tuxedo CORBAの開発コマンド
|
|
|
C++クライアント・アプリケーションを作成します。
|
|
|
|
実装構成ファイル(ICF)を生成します。ICFファイルでは、C++サーバー・アプリケーションのアクティブ化とトランザクションのポリシーを定義します。
|
|
インタフェース・リポジトリを作成して、インタフェース定義をロードします。
|
|
|
|
インタフェース・リポジトリから指定されたオブジェクトを削除します。
|
開発コマンドの説明については、Oracle Tuxedoオンライン・ドキュメントの
『Oracle Tuxedoコマンド・リファレンス』を参照してください。
Oracle Tuxedo CORBAのプログラミング環境では、CORBAアプリケーションを管理するための完全なツール・セットが提供されています。Oracle Tuxedo CORBAアプリケーションの管理を、コマンド、グラフィカル・ユーザー・インタフェース、またはスクリプト内に管理ユーティリティを含めることによって実行することができます。
表2-2のリストにあるコマンドを使用すると、CORBAアプリケーションの管理タスクを実行できます。
|
|
|
|
|
指定された構成ファイルで参照されるOracle Tuxedo CORBAアプリケーションをアクティブにします。使用するオプションによって、アプリケーション全体またはその一部が起動します。
|
|
Oracle Tuxedo CORBAアプリケーションの構成情報を動的に更新および取得します。
|
|
構成ファイルを解析し、バイナリ形式の構成ファイルをロードします。
|
|
指定されたサーバー・アプリケーションを停止するか、構成ファイルからインタフェースを削除します。
|
|
|
AdminAPIというユーティリティ・セットも利用できます。AdminAPIを使用すると、Oracle Tuxedo製品の管理情報ベース(MIB)のシステム設定を直接アクセスおよび操作できます。AdminAPIの利点は、ログ・ファイルのモニタリングやアプリケーションの動的な再構成などの管理タスクを自動化し、人が行う作業を減らせることです。
管理コマンドについては、Oracle Tuxedoオンライン・ドキュメントの
『ファイル形式、データ記述、MIBおよびシステム・プロセス・リファレンス』を参照してください。
AdminAPIについては、Oracle Tuxedoオンライン・ドキュメントの
『Oracle Tuxedoアプリケーションの設定』を参照してください。
Oracle Tuxedo CORBAオブジェクト・サービス
Oracle Tuxedo製品には、Oracle TuxedoドメインのCORBAクライアント・アプリケーションにオブジェクト・サービスを提供する環境オブジェクトのセットがあります。環境オブジェクトには、特定のOracle Tuxedoドメインのサービスにアクセスするブートストラップ・プロセスを通じてアクセスします。
Oracle Tuxedo CORBAでは、次のサービスが提供されます。
オブジェクト・ライフ・サイクル・サービスは、FactoryFinder環境オブジェクトを通じて提供されます。FactoryFinderオブジェクトは、ファクトリを見つけるために使用できるCORBAオブジェクトで、ファクトリでは、CORBAオブジェクトのオブジェクト参照を作成できます。ファクトリとFactoryFinderオブジェクトは、CORBAサービスのライフ・サイクル・サービスの実装です。Oracle Tuxedo CORBAアプリケーションでは、オブジェクト・ライフ・サイクル・サービスを使用してオブジェクト参照を検索します。
セキュリティ・サービスには、SecurityCurrent環境オブジェクトまたはPrincipalAuthenticatorオブジェクトを通じてアクセスします。SecurityCurrentオブジェクトとPrincipalAuthenticatorオブジェクトは、適切なセキュリティを備えるOracle Tuxedoドメインにアクセスするクライアント・アプリケーションを認証するために使用します。Oracle Tuxedoソフトウェアでは、CORBAサービスのセキュリティ・サービスの実装が提供されます。
セキュリティの使用については、Oracle Tuxedoオンライン・ドキュメントの
『CORBAアプリケーションにおけるセキュリティの使用』を参照してください。
トランザクション・サービスには、TransactionCurrent環境オブジェクトまたはTransactionFactoryオブジェクトを通じてアクセスします。TransactionCurrentオブジェクトおよびTransactionFactoryオブジェクトを使用すると、クライアント・アプリケーションがトランザクションに参加できます。Oracle Tuxedoソフトウェアでは、CORBAサービスのオブジェクト・トランザクション・サービス(OTS)の実装が提供されます。
トランザクションの使用方法については、Oracle Tuxedoオンライン・ドキュメントの
『CORBAトランザクションの使用』を参照してください。
インタフェース・リポジトリ・サービスには、InterfaceRepositoryオブジェクトを通じてアクセスします。InterfaceRepositoryオブジェクトは、利用可能なすべてのCORBAインタフェースのインタフェース定義とCORBAインタフェースのオブジェクト参照を作成するファクトリが格納されるCORBAオブジェクトです。InterfaceRepositoryオブジェクトは、DIIを使用するクライアント・アプリケーションで使用します。
DIIの使い方については、
『CORBAクライアント・アプリケーションの作成』を参照してください。
Oracle Tuxedo CORBAでは、次のプログラミング環境の環境オブジェクトが提供されます。
Oracle Tuxedo CORBAでは、初期オブジェクト参照を取得するための、サード・パーティ・クライアントによるOMG CORBA Interoperable Naming Service (INS)の使用もサポートされています。
この項では、Oracle Tuxedo CORBAプログラミング環境の次の構成要素について説明します。
図2-1は、Oracle Tuxedo CORBAアプリケーションの構成要素を示しています。
Oracle Tuxedoドメインのブートストラップ処理
ドメインとは、オブジェクトやサービスを管理エンティティとしてグループ化する方法の1つです。Oracle Tuxedoドメインには、1つ以上のIIOPリスナーおよびハンドラが存在し、名前によって識別されます。1つのクライアント・アプリケーションは、異なるBootstrapオブジェクトを使用して複数のOracle Tuxedoドメインに接続できます。
クライアント・アプリケーションとOracle Tuxedoドメインの通信は、そのドメインをブートストラップ処理することで確立されます。ブートストラップ処理のメカニズムには、OracleのメカニズムとOMGが規定したCORBA Interoperable Naming Service (INS)のメカニズムがあります。Oracle CORBAクライアント・ソフトウェアを使用する場合は、Oracleのメカニズムを使用します。別のベンダーのクライアントORBを使用する場合は、CORBA INSメカニズムを使用します。Oracle Tuxedoドメインのブートストラップ処理の詳細は、Oracle Tuxedoオンライン・ドキュメントの
『CORBAプログラミング・リファレンス』を参照してください。
起動後のクライアント・アプリケーションで最初に行われることの1つは、Bootstrapオブジェクトの作成です。その際には、次のいずれかのURLアドレス形式でIIOPリスナー/ハンドラのホストとポートを指定します。
Bootstrap URLアドレス形式の詳細は、Oracle Tuxedoオンライン・ドキュメントの
『CORBAアプリケーションにおけるセキュリティの使用』を参照してください。
次に、クライアント・アプリケーションではBootstrapオブジェクトまたはINSブートストラップ処理メカニズムを使用してOracle Tuxedoドメインにあるオブジェクトのリファレンスを取得します。Bootstrapオブジェクトがインスタンス化されると、CORBAサービスを提供するOracle Tuxedoドメイン内のオブジェクトのリファレンスを取得するために、
resolve_initial_references()メソッドがクライアント・アプリケーションによって呼び出されます(引数として
string idが渡されます)。
図2-2は、BootstrapオブジェクトまたはINSメカニズムがOracle Tuxedoドメインでどのように機能するかを示しています。
IIOPリスナー/ハンドラは、IIOPを使用して送信されたCORBAクライアントのリクエストを受信し、そのリクエストを適切なCORBAサーバー・アプリケーションに転送するプロセスです。IIOPリスナー/ハンドラは、通信のコンセントレータとして機能し、重要なスケーラビリティ機能を実現します。IIOPリスナー/ハンドラを使用すると、CORBAサーバー・アプリケーションでクライアント接続を管理する必要がなくなります。IIOPリスナー/ハンドラの構成については、Oracle Tuxedoオンライン・ドキュメントの
『Oracle Tuxedoアプリケーションの設定』および
『Oracle Tuxedoコマンド・リファレンス』のISLコマンドの説明を参照してください。
ORBは、CORBAクライアント・アプリケーションからCORBAサーバー・アプリケーションに送信されるリクエストの媒介として機能します。ORBが介在することで、それらのアプリケーションではお互いについての情報が必要なくなります。ORBは、リクエストを満たすことができる実装を見つけたり、リクエストを受信するオブジェクトの実装を準備したり、リクエストを構成するデータを伝達したりするために必要なすべてのメカニズムについて責任を持ちます。Oracle Tuxedo CORBA製品にはC++のクライアント/サーバーORBが含まれています。
図2-3は、ORB、CORBAクライアント・アプリケーションおよびCORBAサーバー・アプリケーションの間の関係を示しています。
クライアント・アプリケーションからIIOPを使用してOracle Tuxedoドメインにリクエストが送信されると、ORBでは次の機能が実行されます。
•
|
各リクエストとその引数を調べて、必要なすべての引数が指定されていることを確認します。
|
•
|
CORBAクライアント・アプリケーションからのリクエストを満たすことができるCORBAオブジェクトを見つけるためのメカニズムを管理します。そのために、ORBではポータブル・オブジェクト・アダプタ(POA)とやり取りします。POAでは、リクエストを受信するオブジェクトの実装が準備され、リクエストのデータが伝達されます。
|
•
|
データをマーシャリングします。クライアント・マシンのORBは、リクエストと関連付けられているデータを標準形式で書き込みます。ORBは、このデータを受信し、サーバー・アプリケーションが動作しているマシンに適切な形式に変換します。サーバー・アプリケーションからクライアント・アプリケーションにデータが送り返されるときに、ORBはデータをマーシャリングして標準形式に戻し、そのデータをクライアント・マシンのORBに送ります。
|
TPフレームワークでは、高水準のパフォーマンスを実現しながら、CORBAインタフェースの複雑さを隠蔽するプログラミング・モデルが提供されます。TPフレームワークではCORBAアプリケーションの迅速な構築がサポートされており、デザイン・パターンに従って適切なTPアプリケーションをビルドすることが容易になっています。
TPフレームワークはポータブル・オブジェクト・アダプタ(POA)およびCORBAアプリケーションとやり取りするので、アプリケーションではPOAを直接呼び出す必要がありません。また、TPフレームワークではトランザクションと状態の管理がOracle Tuxedo CORBAアプリケーションに統合されます。
アプリケーション・プログラマは、標準のCORBAアプリケーションで必要な機能の多くを自動化するアプリケーション・プログラミング・インタフェース(API)を使用します。アプリケーション・プログラマのすることは、CORBAアプリケーションのビジネス・ロジックを記述し、TPフレームワークのデフォルトのアクションをオーバーライドすることだけです。
TPフレームワークのAPIでは、CORBAアプリケーションで必要な次の機能を実行するルーチンが提供されます。
•
|
CORBAサーバー・アプリケーションを初期化し、起動と停止のルーチンを実行します。
|
•
|
オブジェクト・ファクトリの登録と登録削除を行います。
|
•
|
CORBAサーバー・アプリケーションをOracle Tuxedo CORBAシステム・リソースに関連付けます。
|
TPフレームワークを利用すると、クライアントのリクエストが調和のとれた予測可能な方法で実行されます。TPフレームワークでは、Oracle Tuxedoアプリケーションで利用可能なオブジェクトとサービスが適切なときに的確な順序で呼び出されます。また、TPフレームワークではオブジェクトによるシステム・リソースの再利用が最大限に行われます。
図2-4は、TPフレームワークを示しています。
TPフレームワークは単一のオブジェクトではなく、CORBAアプリケーションのデータとビジネス・ロジックを格納および実装するCORBAオブジェクトを管理するためにまとまって機能するオブジェクトの集合です。
TPフレームワークのオブジェクトの1つにServerオブジェクトがあります。Serverオブジェクトは、サーバー・アプリケーションの初期化や解放といったタスクを実行する操作を実装するユーザーの記述によるプログラミング・エンティティです。サーバー・アプリケーションの場合、TPフレームワークではクライアントのリクエストを満たすために必要なCORBAオブジェクトがインスタンス化されます。
サーバー・アプリケーションで現時点でアクティブではなく、メモリーに存在しないオブジェクトを必要とするクライアントのリクエストが届くと、TPフレームワークではそのオブジェクトをインスタンス化するために必要なすべての操作が調整されます。この調整には、ORBや、クライアントのリクエストを適切なオブジェクト実装コードに渡すためのPOAとの調整も含まれます。
Oracle Tuxedo CORBAのクライアント・アプリケーションとサーバー・アプリケーションのやり取り
Oracle Tuxedo CORBAのクライアント・アプリケーションとサーバー・アプリケーションのやり取りは次のように行われます。
1.
|
CORBAサーバー・アプリケーションが初期化されます。
|
2.
|
CORBAクライアント・アプリケーションが初期化されます。
|
3.
|
Oracle TuxedoドメインでCORBAクライアント・アプリケーションが認証されます。
|
4.
|
ビジネス・ロジックを実行するために必要なCORBAオブジェクトのリファレンスがCORBAクライアント・アプリケーションで取得されます。
|
5.
|
CORBAオブジェクトの操作がCORBAクライアント・アプリケーションによって呼び出されます。
|
ステップ1: CORBAサーバー・アプリケーションの初期化
システム管理者が、Oracle Tuxedoドメイン内のマシンで
tmbootコマンドを入力してOracle Tuxedo CORBAサーバー・アプリケーションを起動します。TPフレームワークでは、
Serverオブジェクトの
initialize()操作を呼び出してサーバー・アプリケーションが初期化されます。
初期化プロセスで、Serverオブジェクトでは次のことが行われます。
1.
|
BootstrapオブジェクトまたはINSを使用してFactoryFinderオブジェクトのリファレンスを取得します。
|
2.
|
通常は、FactoryFinderオブジェクトにファクトリを登録します。
|
3.
|
必要に応じてORBのオブジェクト参照を取得します。
|
ステップ2: CORBAクライアント・アプリケーションの初期化
初期化時に、CORBAクライアント・アプリケーションではOracle Tuxedoドメインにあるオブジェクトの初期リファレンスを取得します。
Bootstrapオブジェクトからは、Oracle TuxedoドメインのFactoryFinder、SecurityCurrent、TransactionCurrent、NameService、およびInterfaceRepositoryの各オブジェクトのリファレンスが返されます。
ステップ3: Oracle TuxedoドメインへのCORBAクライアント・アプリケーションの認証
Oracle Tuxedoドメインにセキュリティ・モデルが採用されている場合、CORBAクライアント・アプリケーションは、CORBAサーバー・アプリケーションで操作を起動する前にOracle Tuxedoドメインに自らを認証する必要があります。Oracle Tuxedoドメインで自らを認証するために、CORBAクライアント・アプリケーションは次のステップを実行します。
1.
|
Bootstrapオブジェクトを使用してSecurityCurrentオブジェクトのリファレンスを取得します。
|
2.
|
PrincipalAuthenticatorオブジェクトの logon()操作を呼び出します。PrincipalAuthenticatorオブジェクトは、SecurityCurrentオブジェクトから取り出します。
|
注意:
|
証明書に基づく認証の方法については、Oracle Tuxedoオンライン・ドキュメントの 『CORBAアプリケーションにおけるセキュリティの使用』を参照してください。
|
ステップ4: CORBAクライアント・アプリケーションによる、ビジネス・ロジックの実行に必要なCORBAオブジェクトのリファレンスの取得
CORBAクライアント・アプリケーションでは、以下のことを実行する必要があります。
1.
|
必要なオブジェクトのファクトリのリファレンスを取得します。
|
たとえば、クライアント・アプリケーションではSimpleFactoryオブジェクトのリファレンスが必要です。次の図で示されているように、このファクトリのリファレンスはFactoryFinderオブジェクトから取得します。
2.
|
SimpleFactoryオブジェクトを呼び出して、 Simpleオブジェクトのリファレンスを取得します。
|
SimpleFactoryオブジェクトがアクティブでない場合は、次の図で示されているように、TPフレームワークがServerオブジェクトの
Server::create_servantメソッドを呼び出してSimpleFactoryオブジェクトをインスタンス化します。
3.
|
TPフレームワークでは、次の図で示されているように、SimpleFactoryオブジェクトの activate_object()操作と find_simple()操作を呼び出してSimpleオブジェクトのリファレンスを取得します。
|
SimpleFactoryオブジェクトからクライアント・アプリケーションに
Simpleオブジェクトのオブジェクト参照が返されます。
注意:
|
TPフレームワークはデフォルトでオブジェクトをアクティブにするので、Simpappサンプル・アプリケーションではSimpleFactoryオブジェクトで activate_object()操作を明示的には使用しません。
|
ステップ5: CORBAクライアント・アプリケーションによる、CORBAオブジェクトの操作の呼出し
ファクトリからクライアント・アプリケーションに返されたCORBAオブジェクトのリファレンスを使用して、クライアント・アプリケーションからオブジェクトの操作を呼び出します。たとえば、現時点でSimpleオブジェクトのオブジェクト参照があるので、クライアント・アプリケーションではSimpleオブジェクトの
to_upper()操作を呼び出すことができます。クライアントのリクエストで必要なSimpleオブジェクトのインスタンスは、次の図のように作成されます。