![]() |
![]() |
|
|
| |
WebLogic jCOM ツール
以下の節では、よく使用する WebLogic jCOM ツールについて説明します。
regjvm GUI ツール
WebLogic jCOM を使用すると、COM をサポートする言語で、あたかも COM オブジェクトであるかのように Java オブジェクトにアクセスできます。
そのためには、Java オブジェクトが実行される JVM の参照を(COM クライアント マシン上に)登録する必要があります。regjvm
ツールを使用すると、マシン上ですべての JVM 参照を作成および管理できます。
注意: regjvm
ツールでは、古いエントリと同名の新しいエントリが入力されても、古いエントリは上書きされません。このため、通信するマシンのホスト名またはポートを変更する必要がある場合は、古いエントリの登録を解除しなければなりません。そのためには、コマンド ライン ツールの regjvmcmd.exe
か、または GUI ツールの regjvm.exe
を使用します(どちらも jCOM
\bin
ディレクトリに格納されています)。
JVM のモード
COM クライアントから JVM には、以下のモードを使用してアクセスできます。
DCOM モード
DCOM モードでは、Java サーバ サイド上にネイティブ コードは不要です。このため、Java コードは Java 仮想マシンがインストールされている Unix マシンや他のマシン上に配置できます。Windows クライアント マシン上で JVM を登録する場合、サーバのホスト マシン名(ローカル コンポーネント用のローカルホストの場合もあります)とポート番号を定義します。
JVM 内の Java コードは、com.bea.jcom.Jvm.register("<jvm id>") を呼び出す必要があります。ここで <jvm id> は、regjvm で定義した JVM の ID です。また JVM は、指定した <jvm id> 用に regjvm ツールで定義したポートに設定された JCOM_DCOM_PORT プロパティで開始されなければなりません。
ネイティブ モード(プロセスの外部)
ネイティブ モードは、現在ローカル マシン上でのみ動作します。JVM 名以外にパラメータは必要ありません。
JVM 内の Java コードは、com.bea.jcom.Jvm.register("<jvm id>") を呼び出す必要があります。ここで <jvm id> は、regjvm で定義した JVM の ID です。また JVM は、設定された JCOM_NATIVE_MODE プロパティで開始されなければなりません。
ネイティブ モード(プロセスの内部)
プロセス内部のネイティブ モードを使用すると、Java オブジェクトを COM クライアント同じプロセスに実際にロードできます。もちろん、どちらのオブジェクトも同じマシン上に配置しなければなりません。
JVM は、com.bea.jcom.Jvm.register() を呼び出すか、またはクライアントの追加プロセスとして開始する必要があります。
regjvm GUI ツールのインタフェース
regjvm
ツールを実行すると、ダイアログが表示されます。このダイアログは、以下の 2 つの部分に分かれています。
これらのオプションについては、以下の節で説明します。
regjvm GUI ツールの DCOM モード オプション
標準オプション
詳細オプション
regjvm GUI ツールのネイティブ モード オプション
標準オプション
このモードの標準オプションは存在しません。
詳細オプション
regjvm GUI ツールのプロセス内ネイティブ モード オプション
標準オプション
詳細オプション
regjvmcmd コマンド ライン ツール
regjvmcmd
は、前述の GUI ツール、regjvm
のコマンド ライン バージョンです。このパラメータのまとめを参照するには、パラメータを指定せずに regjvmcmd
を実行します。
最も単純な形式では、以下のものを指定します。
com.bea.jcom.Jvm.register("JvmId"
) で使用する名前に対応)。
hostname[port]
で、hostname は JVM を実行するマシン名、port は JCOM_DCOM_PORT プロパティを選択することによって JVM の起動時に指定する TCP/IP ポートです(java -DJCOM_DCOM_PORT=1234 MyMainClass
など)。
JVM を登録する必要がないか、またはその登録を変更する場合、まず regjvmcmd/unregister JvmId
を使用してその登録を解除する必要があります。
java2com ツール
java2com
ツールは、Java クラスを(Java の reflection メカニズムを使用して)解析し、以下のものを出力します。
IDL ファイルは、Microsoft's MIDL
ツールでコンパイルする必要があります。
IDL ファイルとラッパーを生成するには、次のコマンドを使用して java2com
ツールを起動します。
java com.bea.java2com.Main
このツールは、どのようなプラットフォームでも実行できます。WebLogic jCOM ランタイム jCOM.jar
が CLASSPATH
環境変数に含まれていることを確認してください。
java2com
ツールは、次のダイアログ ボックスを表示します。
このダイアログ ボックスには、以下のフィールドが存在します(コンフィグレーションの変更は、ダイアログ ボックスの終了時に自動的に保存されます)。
java2com
で解析する「ルート」Java クラスとインタフェースが存在します。これらは、CLASSPATH
でアクセス可能でなければなりません。WebLogic jCOM はこれらのクラスを解析し、COM IDL 定義と、COM から Java クラスにアクセスするための Java DCOM マーシャリング コードを生成します。次に、そのクラスのパラメータまたはフィールドで使用されるクラスまたはインタフェースに対して同じ解析を繰り返し実行し、同様にアクセスできるすべての Java クラスとインタフェースを解析します。
クラス名はスペースで区切って入力します。[...] ボタンをクリックすると、クラスのリストを表示して、そのリストから追加または削除を行うためのダイアログが表示されます。
これは、生成される COM インタフェース定義言語(IDL)ファイルの名前です。myjvm
と指定した場合は、myjvm.idl
が生成されます。この名前は、Microsoft の MIDL コンパイラを使用して myjvm.idl
をコンパイルするときに生成される型ライブラリの名前にも使用されます。
java2com
が生成したファイルを出力するディレクトリです。デフォルトはカレント ディレクトリ(「.」)です。
java2com
が発見したクラスをそのまま表示します。
[Save Settings] ボタンをクリックすると、現在の java2com
設定が保存されます。
java2com
は、起動時にカレント ディレクトリに java2com.ser
設定ファイルが存在するかどうかをチェックします。存在する場合、そのファイルから設定を自動的にロードします。
[Names...] ボタンをクリックすると、次のダイアログ ボックスが表示されます。
クラス/インタフェース名ドロップダウン リストから「*」を選択すると、メンバー(フィールドまたはクラス)名の名前を入力するためのテキスト ボックスが表示されます。生成するクラスまたはインタフェースでそのメンバー名が見つかったときに使用される対応 COM 名を指定できます。この名前を空白のままにした場合、Java メンバーは COM インタフェースで生成される対応メンバーを持ちません。
クラス/インタフェース名ドロップダウン リストから特定の COM クラス名またはインタフェースを選択すると、そのクラスまたはインタフェースのメンバーのセットがその下に表示されます。使用する COM 名を指定し、[Add this Class Name map] をクリックすることによって、選択したクラス/インタフェースを指定した COM 名にマップします。[Add this Class Name map] をクリックすると、選択したメンバーを指定した COM 名にマップできます。
ラッパーおよび IDL ファイルを生成します。
java2com
が発見するパブリック Java インタフェースごとに、対応する COM インタフェース定義が作成されます。Java インタフェース名が com.bea.finance.Bankable の場合、生成される COM インタフェースの名前は、[Names ...] ダイアログで異なる名前を指定しない限り、ComBeaFinanceBankable となります。
java2com
が発見するパブリック Java クラスごとに、対応する COM インタフェース定義が作成されます。Java クラス名が com.bea.finance.Account
の場合、生成される COM インタフェースの名前は、[Names ...] ダイアログで異なる名前を指定しない限り、IComBeaFinanceAccount
となります。また、Java クラスがパブリック デフォルト コンストラクタを持つ場合、java2com は、[Names ...] ダイアログで異なる名前を指定しない限り、COM クラス ComBeaFinanceAccount を生成します。
Java クラスが Java イベントを生成できる場合、生成される COM クラスは Java クラスによってサポートされるイベントに対応するソース インタフェース(COM イベント)を持ちます。
生成された IDL ファイルは、Microsoft の MIDL ツールを使用してコンパイルします。このツールは Visual C++ に付属しており、MS Web サイトからダウンロードできます。次のコマンド、
midl prodServ.idl
は、prodServ.tlb
という型ライブラリを生成します。このライブラリは、以下の節で説明するとおり登録できます。
regtlb ツール
WebLogic jCOM の regtlb
ツールは、COM のアーリー バインディング メカニズムを使用して Java オブジェクトにアクセスする COM Windows クライアントに型ライブラリを登録します。regtlb
は、2 つのパラメータを取ります。最初のパラメータは、登録する型ライブラリ ファイルの名前です。2 番目は、型ライブラリに記述されている COM クラスが存在する JVM の ID です。
WebLogic jCOM java2com
ツールで生成された IDL ファイルから型ライブラリが生成された場合、regtlb
コマンドは、型ライブラリ内の各 COM クラスに対応する Java クラス名を自動的に調べます。型ライブラリの COM クラス記述の形式は次のとおりです。
Java class java.util.Observable (via jCOM))
java2com
で生成された IDL ファイルから型ライブラリが生成されなかった場合、各 COM クラスに対してインスタンス化する Java クラスの名前を指定する必要があります。
このため、誰かが Atldll.Apple
のインスタンスを作成しようとした場合、WebLogic jCOM は JVM MyJvm
内の com.bea.MyAppleClass
をインスタンス化します。MyAppleClass
クラスは、COM クラス Atldll.Apple
によって実装される atldll.tlb
から WebLogic jCOM の java2com
ツールで生成された Java インタフェースを実装します。
![]() |
![]() |