![]() |
![]() |
|
|
idltojava コンパイラの概要
BEA Tuxedo 製品の CORBA 環境では、Object Management Group (OMG) によって定義されている業界標準の Object Management Group (OMG) インターフェイス定義言語 (IDL) とインターネット ORB 間プロトコル (IIOP) を使用して、CORBA Java クライアントおよび CORBA Java 共同クライアント/サーバが BEA Tuxedo ドメイン内の CORBA オブジェクトのオペレーションを呼び出すことができます。
CORBA オブジェクトにアクセスできる CORBA Java クライアントおよび CORBA Java 共同クライアント/サーバを構築するには、OMG IDL ファイルを Java クライアント・スタブおよびスケルトン・ファイルに変換するツールである BEA idltojava コンパイラが必要です。idltojava コンパイラは、BEA Tuxedo ソフトウェアに含まれています。
ここでは、次の内容について説明します。
BEA idltojava コンパイラの入手先
idltojava コンパイラの BEA 版は、BEA Tuxedo CD-ROM に含まれています。BEA Tuxedo ソフトウェアをインストールすると、idltojava コンパイラは TUXDIR
\bin
に格納されます。
BEA 版 idltojava コンパイラと Sun Microsystems, Inc. 版の相違
BEA Tuxedo 製品で提供される idltojava コンパイラには、Sun Microsystems, Inc. によるオリジナルの idltojava コンパイラにはない機能の改良、拡張、および追加が複数含まれています。ここでは、BEA Tuxedo 製品に含まれているコンパイラの変更点の概要を説明します。BEA Tuxedo 製品で提供される idltojava コンパイラを使用する方法の詳細については、「idltojava コマンドの使用」を参照してください。
次に、BEA Tuxedo 版の idltojava コンパイラの相違点を示します。
#pragma ID <
name> <Repostitory_id>
が追加されています。「IDL ファイルでの #pragma の使用」を参照してください。#pragma version <
name> <m.n>
が追加されています。「IDL ファイルでの #pragma の使用」を参照してください。#pragma prefix
が拡張されて、内部スコープを扱えるようになりました。空白の接頭辞が戻されます。「IDL ファイルでの #pragma の使用」を参照してください。
IDL とは
インターフェイス定義言語 (IDL) は、何らかのプログラミング言語で記述されたプログラムまたはオブジェクトと未知の言語で記述されたほかのプログラムとを通信できるようにする言語を指す一般的な用語です。分散オブジェクト技術では、新しいオブジェクトは任意のプラットフォーム環境に送信可能であるだけでなく、その環境で実行されるための方法を発見する機能を備えている必要があります。たとえば、ORB はインターフェイス定義言語を使用して 1 つのオブジェクト・プログラムと別のオブジェクト・プログラム間の通信を「仲介 (ブローカ) する」プログラムの一例です。
すべての CORBA オブジェクトは IDL インターフェイスをサポートします。IDL インターフェイスはオブジェクトの型を定義します。1 つのインターフェイスは、1 つまたは複数のほかのインターフェイスから継承することができます。IDL の構文は Java または C++ の構文と類似しており、IDL ファイルは機能的には C++ のヘッダ・ファイルに相当しますが CORBA でのプログラミング言語に依存しません。IDL は各プログラミング言語にマップされて、その言語からオブジェクト・インターフェイスへのアクセスを可能にします。Java IDL を使用すれば、IDL のインターフェイスは idltojava コンパイラで Java に変換可能になります。各 IDL インターフェイスについて、idltojava コンパイラは Java インターフェイスおよび必要な .java
ファイルを、クライアント・スタブおよびサーバ・スケルトンも含めて生成します。
IDL インターフェイスは、クライアントからアクセス可能なオペレーション、例外、および型付き属性 (値) のセットを宣言します。各オペレーションには、名前、パラメータ、結果、および例外を定義するシグニチャがあります。リスト 1-1 に、BEA Tuxedo 製品に含まれている Simpapp サンプル・アプリケーションの Simple インターフェイスの IDL を示します。
リスト 1-1 Simpapp サンプル・アプリケーションの IDL インターフェイス
#pragma prefix "beasys.com"
interface Simple
{
// 文字列を小文字に変換 (新しい文字列を返す)
string to_lower(in string val);
// 文字列を大文字に変換 (置換)
void to_upper(inout string val);
};
interface SimpleFactory
{
Simple find_simple();
};
Java IDL とは
Java IDL は、OMG IDL と特別に異なる種類のインターフェイス定義言語 (IDL) ではありません。同じ IDL を idltojava コンパイラでコンパイルすれば CORBA 互換の Java ファイルが生成され、C++ ベースのコンパイラを使用すれば CORBA 互換の C++ ファイルが生成されます。IDL に対して使用するコンパイラによって、相違点が生じます。OMG によって、IDL と C++ のマッピングだけでなく IDL と Java のマッピングも確立されています。特定のプログラミング言語ベースのコンパイラは、OMG CORBA によるプログラミング言語へのマッピングに基づいてコードを生成します。
BEA Tuxedo 製品では、独自の「ブランド」の Java IDL が用意されています。つまり、BEA Tuxedo 製品では、CORBA オブジェクトにアクセスする機能を備えた CORBA Java クライアントおよび CORBA Java 共同クライアント/サーバの構築に必要なすべてのコンポーネントが提供されています。BEA Tuxedo 製品の主要なコンポーネントについては、「CORBA オブジェクトへのアクセス」を参照してください。
CORBA オブジェクトへのアクセス
idltojava コンパイラを使用すると、2 種類のアプリケーションを構築できます。
idltojava
コマンドからのファイルを自身のクライアント・スタブに利用する CORBA Java クライアント。idltojava
コマンドからのファイルを自身のクライアント・スタブおよびサーバ・スケルトンに利用する CORBA Java 共同クライアント/サーバ。CORBA Java クライアントおよび CORBA Java 共同クライアント/サーバは、インターネット ORB 間プロトコル (IIOP) を使用して BEA Tuxedo 製品のアプリケーション・トランザクション・モニタ・インターフェイス (ATMI) 環境と通信します。BEA 製品の ATMI 環境は、CORBA Java サーバ・オブジェクトのホスティングをサポートしていません。
注記 共同クライアント/サーバは、コールバック・オブジェクトとして利用される CORBA サーバ・オブジェクトをインプリメントするクライアントです。リモート共同クライアント/サーバのサーバ機能は、BEA Tuxedo CORBA サーバのサーバ機能よりも大幅にぜい弱です。共同クライアント/サーバの詳細については、『BEA Tuxedo CORBA サーバ間通信』を参照してください。
BEA Tuxedo 製品では、CORBA オブジェクトにアクセスする機能を備えた CORBA Java クライアントおよび CORBA Java 共同クライアント/サーバの構築に必要なすべてのコンポーネントが提供されています。主要なコンポーネントは、次のとおりです。
idltojava
コマンドは、標準的な CORBA IDL ソース・コードを Java のソース・コードにコンパイルします。その後で、javac
コンパイラを使用して Java のソース・コードを Java のバイトコードにコンパイルできます。idltojava コンパイラの詳細については、「idltojava コマンドの使用」を参照してください。CORBA Java クライアントおよび CORBA Java 共同クライアント/サーバは、以下のものからオブジェクト・リファレンスを取得します。
たとえば、クライアントは DocumentFactory
オブジェクトの create
メソッドを呼び出して新しい Document
を作成できます。DocumentFactory
の create
メソッドは、Document
へのオブジェクト・リファレンスをクライアントに返します。
BEA Tuxedo 製品の今回のリリースに含まれる CORBA Java クライアントでは、オブジェクト・リファレンスの取得にファクトリ・オブジェクトを使用することを推奨します。
FactoryFinder オブジェクトは、1 つの BEA Tuxedo ドメイン内または複数のドメイン間で CORBA オブジェクトを登録、格納、および検索します。
FactoryFinder オブジェクトの使用の詳細については、CORBA Javadoc を参照してください。
オブジェクト・リファレンスを取得した後で、クライアントはオブジェクト・リファレンスを適切な型にナロー変換する必要があります。IDL は継承をサポートします。継承の階層のルートは、IDL では Object
、Java では org.omg.CORBA.Object
です。(org.omg.CORBA.Object
は、java.lang.Object
のサブクラスです)。一部のオペレーション、たとえば名前のルックアップや非文字列化では、org.omg.CORBA.Object
が返されるので、idltojava コンパイラで生成されたヘルパ・クラスを利用して必要な派生型にナロー変換してください。Java ランタイムが CORBA オブジェクトの型を常に正確に認識できるとは限らないので、CORBA オブジェクトは明示的にナロー変換される必要があります。
![]() |
![]() |
|
Copyright © 2001, BEA Systems, Inc. All rights reserved.
|