• 検索結果がありません。

com2java

ドキュメント内 jcom.book (ページ 55-63)

java2com

regjvm

regjvmcmd

regtlb

com2java

WebLogic jCOM の com2javaツールは、 型ラ イ ブ ラ リ か ら 情報を読み込み、 そ の型 ラ イ ブ ラ リ に定義 さ れてい る COM ク ラ スおよ びイ ン タ フ ェース にア ク セス する ための Java フ ァ イルを生成し ます。

型ラ イ ブ ラ リ には、 COM ク ラ ス、 イ ン タ フ ェース、 およびその他のコ ン ス ト ラ ク ト が登録 さ れてい ます。 通常、 こ れ ら は Visual C++ や Visual BASIC な どの開 発ツールに よっ て生成 さ れます。

こ のため、 一部の型 ラ イ ブ ラ リ は簡単に識別可能です。 拡張子 olbま たは tlb で終わ る フ ァ イルは、 確実に型 ラ イ ブ ラ リ です。 し か し、 少々ややこ し いのは、

型ラ イ ブ ラ リ は実行フ ァ イルな どの他のフ ァ イルに格納さ れ る場合があ る こ と で す。 Visual BASIC は、 生成し た実行フ ァ イ ルに型 ラ イ ブ ラ リ を格納し ます。

com2java の使い方

com2java は、 コ マン ド シ ェルで入力する か、 そのア イ コ ン を ダブル ク リ ッ ク し て起動し ます。

com2java を起動する と 、 次のダ イ ア ロ グが表示さ れます。

型ラ イブ ラ リの選択

ツールで処理する型ラ イ ブ ラ リ を選択するには、 [Select ...] ボ タ ン を ク リ ッ ク し ます。

型 ラ イ ブ ラ リ は、 COM コ ンポーネン ト を含んでい る実行フ ァ イ ルやダ イナ ミ ッ ク リ ン ク ラ イ ブ ラ リ (DLL) フ ァ イ ルなどの内部に隠 さ れている場合 も あ り ま す。

com2javaツールは、 以前にオープン し てそのプ ロ キシ を生成し た型ラ イ ブ ラ リ の リ ス ト を記憶し てい ます。

com2java

Java パッ ケージ名の指定

com2java ツールは、 型ラ イ ブ ラ リ の COM ク ラ スおよ びイ ン タ フ ェースに対応 する Java ソ ース フ ァ イ ルを生成し ます。 生成し たフ ァ イ ルは、 特定のパ ッ ケー ジに格納で き ます。 た と えば、 Excel 型ラ イ ブ ラ リ のすべてのフ ァ イルを excel と い う Java パ ッ ケージに格納でき ます。

[Java package] テキ ス ト ボ ッ ク スに、 生成さ れた フ ァ イルを格納するパ ッ ケージ の名前を指定し ます。

com2javaツールは、 特定の型ラ イ ブ ラ リ に対し て指定し た直前のパ ッ ケージ名 を記憶し ています。

オプシ ョ ン

[Options...] ボ タ ン を ク リ ッ クする と 、 以下で説明する com2java用のオプシ ョ ン を選択する ためのダ イ ア ロ グ ボ ッ ク スが表示 さ れますこ れ ら のオプシ ョ ンは、

com2javaのセ ッ シ ョ ン間で自動的に保存 さ れます。 特定のプ ロ キシの生成処理 でのみオプシ ョ ンが必要な場合は、 プ ロ キシの生成後にオプシ ョ ン を リ セ ッ ト し ます。

オプシ ョ ン 説明

[Clash Prefix] 型 ラ イ ブ ラ リ に定義 さ れてい る COM イ ン タ フ ェース の メ ソ ッ ド が既に Java で使用 さ れてい る メ ソ ッ ド (getClass() メ ソ ッ ド な ど) と衝突する 場合、

com2javaは生成し た メ ソ ッ ド の名前の先頭に zz_ と い う 文字列 (デフ ォル ト ) を付け る。

[Lower case method names]

Java メ ソ ッ ド 名の命名規則では、 メ ソ ッ ド 名は小文字で 開始し なければな ら ない。com2javaツールはデフ ォル

ト で こ の規則を採用 し、 それに応 じ て メ ソ ッ ド 名を変更 す る。com2javaで こ の規則を無視する 場合は、

[Options] ダ イ ア ロ グボ ッ ク ス の [Lower case method names] チ ェ ッ ク ボ ッ ク ス をオ フにする 。

[Only generate IDispatch]

WebLogic jCOM は、IDispatch お よび vtable ア ク セ ス を 使用 し た COM オブジ ェ ク ト の呼び出し をサポー ト し て い る 。 こ のオプシ ョ ン を選択す る と、 すべての呼び出 し は IDispatch イ ン タ フ ェース を使用 し て行われ る 。 [Generate retry code on

'0x80010001 - Call was rejected by callee']

COM サーバがビ ジーの場合、 エ ラ ーコ ー ド を受け取る 場合があ る。 こ のオプシ ョ ン を選択する と、 こ のエ ラ ー

コー ド を受け取る たびに コ ー ド が再試行 さ れ る。

[Generate Arrays as Objects]

SAFEARRAY のパ ラ メ ータ は、 生成 さ れ る

java.lang.Object 型の対応する Java パ ラ メ ー タ を持っ てい る。 こ れは、Variant の外部の 2 次元配列を Java か ら COM オブジ ェ ク ト へ、 ま たは COM オブジ ェ ク ト か ら 受 け渡す場合に必要。

こ のオプシ ョ ンは、 実際に渡 さ れ る も のを変更し ない。

それは依然 とし て配列であ り 、 生成 さ れた Java イ ン タ フ ェース に存在す る。 生成 さ れた メ ソ ッ ド プ ロ ト タ イ プ で配列型を生成せずに、 「Object」 を指定する 。 こ れは、

2D 配列を受け渡す とき に役立つ。COM IDL では、 次元 の数は SAFEARRAY に対 し て指定 さ れない。 ま た、

[Generate Arrays as Objects] オプシ ョ ン をチ ェ ッ ク し な かった場合、WebLogic jCOM は単一要素配列を受け渡

し た と仮定し て対応す る プ ロ ト タ イ プを生成する 。 こ のオプシ ョ ン を選択 し、com2javaで 「String[]」 (た とえば) の代わ り に 「Object」 を生成す る こ と に よ り 、 自由に 2D 文字列配列を受け渡す こ とがで き る 。 [Prompt for names for

imported tlbs]

型 ラ イ ブ ラ リ は、 別の型 ラ イ ブ ラ リ を イ ン ポー ト する 場 合があ る 。 イ ン ポー ト さ れた型 ラ イ ブ ラ リ のプ ロ キシ も 生成する 場合、 こ のオプシ ョ ン を選択す る とこ れ ら のプ

ロ キ シのパ ッ ケージ名を指定で き る 。 [Don't generate

dispinterfaces]

こ のオプシ ョ ン を選択する と 、 デ ィ ス パ ッ チ イ ン タ フ ェース と し て定義 さ れてい る イ ン タ フ ェース のプ ロ キ シの生成が禁止 さ れ る 。

オプシ ョ ン 説明

com2java

プロキシの生成

[Generate Proxies] ボ タ ン を ク リ ッ クする と 、com2javaツールに よって生成さ れ る Java フ ァ イ ルを格納するデ ィ レ ク ト リ を選択でき ます。

デ ィ レ ク ト リ を選択する と 、com2javaは型 ラ イ ブ ラ リ を解析し、 対応する フ ァ イ ルを指定し たデ ィ レ ク ト リ に出力し ます。 既にデ ィ レ ク ト リ に Java ソ ース フ ァ イ ルが存在する場合、 WebLogic jCOM は警告 メ ッ セージを発行し 、 操作を キ ャ ンセルでき る よ う に し ます。

com2java によ り生成された フ ァ イル

com2java ツールは、 型ラ イ ブ ラ リ に含まれ る以下の 3 種類のコ ン ス ト ラ ク ト を 扱います。

[Generate deprecated constructors]

生成 さ れ る プ ロ キシには、 現在は非推奨 とな っ てい る コ ン ス ト ラ ク タ がい く つか含まれ る 。 こ れ ら の コ ン ス ト ラ ク タ を生成 し た く ない場合は、 こ のオプシ ョ ン を選択す る 。

[Don't rename methods with same names]

COM ク ラ ス で名前の衝突が検出 さ れた場合、com2java はその メ ソ ッ ド の 1 つの名前を自動的に変更する 。 こ の オプシ ョ ン を選択す る と、 名前の自動変更が無効にな る 。

[Ignore conflicting interfaces]

COM ク ラ ス が同名の メ ソ ッ ド を定義する 複数の イ ン タ フ ェース を実装する 場合、 こ のオプシ ョ ン を選択す る と 、 対応す る Java ク ラ ス は余計な イ ン タ フ ェース を実装 し ない。 生成 さ れ る getAsXXX メ ソ ッ ド を使用すれば、

こ れ ら の イ ン タ フ ェース に引 き続 き ア ク セ ス で き る 。 生 成 さ れ る コ メ ン ト を参照の こ と 。

[Generate Java Abstract Window Toolkit (AWT) classes]

Java ク ラ ス を GUI ク ラ ス と し て生成する 。ActiveX コ ン ト ロールを Java フ レームに埋め込むために使用す る。

オプシ ョ ン 説明

列挙値

COM イ ン タ フ ェース

COM ク ラ ス

こ れについては こ の節で説明し ます。

生成さ れた Java フ ァ イ ルを使用し て COM オブジ ェ ク ト を操作する方法につい ては、 ア ク セスする COM オブジ ェ ク ト に関する ド キ ュ メ ン ト を参照し て く だ さ い。

た と えば、com2javaを Excel 型ラ イ ブ ラ リ に対し て実行する場合、 生成 さ れる Java フ ァ イ ルは Microsoft Excel COM API に対応し ています。 こ のため、

Microsoft Excel のプ ロ グ ラ ミ ング ド キ ュ メ ン ト を参照する必要があ り ます。 た と えば、 Excel 2000 COM API については下記を参照し ます。

http://msdn.microsoft.com/library/default.asp?URL=/library/officedev/off2000/xltoc objectmodelapplication.htm

列挙値

Java では、 列挙値は java.util.Enumeration で表 さ れる リ ス ト です。 型ラ イ ブ ラ リ に列挙値が含まれている場合、 WebLogic jCOM はその列挙中の要素ご と の 定数定義を含んだ Java イ ン タ フ ェース を生成し ます。

COM イ ン タ フ ェ ース

WebLogic jCOM は、 2 種類の イ ン タ フ ェース を処理し ます。 1 つはデ ィ スパ ッ チ イ ン タ フ ェース です。 こ の メ ソ ッ ド には COM IDispatch メ カニズム を使用し な い と ア ク セ スでき ません。 も う 1 つはデュ アル イ ン タ フ ェースです。 こ の メ

ソ ッ ド は直接呼び出すこ と がで き ます (vtbl ア ク セ ス )。

型 ラ イ ブ ラ リ に定義さ れてい る COM イ ン タ フ ェース ご と に、com2javaツール は Java イ ン タ フ ェース と Java ク ラ スの 2 つの Java フ ァ イルを生成し ます。

com2java

生成 さ れる Java イ ン タ フ ェースの名前は、 COM イ ン タ フ ェースの名前 と 同じ で す。 た と えば、 COM イ ン タ フ ェース名が IMyInterfaceの場合、com2java ツールは IMyInterfaceと い う Java イ ン タ フ ェース を IMyInterface.javaフ ァ イ ルに生成し ます。

com2javaが生成する も う 1 つのフ ァ イ ルは Java ク ラ スです。 こ のフ ァ イ ルに は、 イ ン タ フ ェース を実装する COM オブジ ェ ク ト にア ク セ スする ための コー ド

と 、 イ ン タ フ ェース を実装する Java ク ラ スの メ ソ ッ ド を COM オブジ ェ ク ト が 呼び出すための コー ド が含まれます。 生成 さ れる Java ク ラ スの名前は、 イ ン タ フ ェースの名前に 「Proxy」 を付加し た ものです。 前項の例では、 WebLogic jCOM は IMyInterfaceProxy と い う Java ク ラ ス を IMyInterfaceProxy.java と い う フ ァ イ ルに生成し ます。

COM イ ン タ フ ェースの メ ソ ッ ド ご と に、 WebLogic jCOM は Java イ ン タ フ ェー ス内に対応する メ ソ ッ ド を生成し ます。 イ ン タ フ ェース内に生成 さ れる一部の定 数は、 生成 さ れる コ メ ン ト が示すよう に無視し て構いません。 それ ら について知

る必要も、 使用する必要も あ り ません。

WebLogic jCOM は、 イ ン タ フ ェース と その メ ソ ッ ド を記述し た型ラ イ ブ ラ リ か ら コ メ ン ト を取 り 出し 、 それ ら を生成 さ れた javadoc コ メ ン ト で使用し ます。

COM ク ラ ス

COM ク ラ スは、 1 つま たは複数の COM イ ン タ フ ェース を実装 し ます。 こ れは、

Java ク ラ スが 1 つま たは複数の Java イ ン タ フ ェース を実装でき るの と 同じ です。

型ラ イ ブ ラ リ の COM ク ラ ス ご と に、com2javaツールは、 その COM ク ラ ス と 同名の対応する Java ク ラ ス を生成し ます。 WebLogic jCOM は、 複数の イ ン タ フ ェース を実装する ク ラ ス もサポー ト し ています。

WebLogic jCOM が生成する Java ク ラ ス を使用する と 、 対応する COM ク ラ スに ア ク セ スで き ます。

ドキュメント内 jcom.book (ページ 55-63)

関連したドキュメント