ORACLE JAPAN Server Release 6.1

 

  |  

  WebLogic Server ホーム   |     jCOM リファレンス   |   前へ   |   次へ   |   目次   |   索引   |   PDF 版

Java からの COM オブジェクトの使い方

 

この章では、COM オブジェクトのインスタンスを作成し、WebLogic jCOM を使ってそれを Java から使用する方法について説明します。 また、COM オブジェクトへのメソッド呼び出しから返される COM オブジェクトの新しい参照についても説明します。

この章を読む前に、com2java ツールのマニュアルを通読しておいてください。

 


com2java によって COM クラスから生成される Java クラス

com2java ツールは、型ライブラリ内で COM クラスを発見するたびにその COM クラスにアクセスするための Java クラスが生成されます。 生成された Java クラスは、複数のコンストラクタを持ちます。

デフォルト コンストラクタ

デフォルト コンストラクタを使用すると、デフォルト認証を使用するか(設定されている場合)、認証を使用せずに(デフォルトが設定されていない場合)ローカル マシン上に COM オブジェクトのインスタンスを作成できます。

2 番目のコンストラクタ (String host)

2 番目のコンストラクタを使用すると、デフォルト認証を使用するか(設定されている場合)、認証を使用せずに(デフォルトが設定されていない場合)特定のマシン上に COM オブジェクトのインスタンスを作成できます。

3 番目のコンストラクタ (AuthInfo authInfo)

3 番目のコンストラクタを使用すると、特定の認証を使用してローカル ホスト上に COM オブジェクトのインスタンスを作成できます。

4 番目のコンストラクタ (String host, AuthInfo authInfo)

4 番目のコンストラクタを使用すると、特定の認証を使用して特定のホスト上に COM オブジェクトのインスタンスを作成できます。

最後のコンストラクタ (Object objRef)

最後のコンストラクタは、実際に新しい COM クラスのインスタンスを作成しません。 その代わり、このコンストラクタを使用すると、(メソッド呼び出しから、またはプロパティもしくはイベントを介して)別の COM クラスから返された COM クラスの参照にアクセスできます。

メソッドまたはプロパティが COM クラスの参照を返した場合、com2java ツールは適切な Java クラスを返すメソッド シグネチャを自動的に生成します(返された COM クラスが同じ型ライブラリに定義されている場合)。

 


com2java によって COM インタフェースから生成される Java インタフェースおよびクラス

COM インタフェースのメソッドは、特定のインタフェースを介してオブジェクトの参照を返すことができます。

たとえば、Excel 型ライブラリ(Excel8.olb)は、_Application COM インタフェースを定義し、そのメソッド Add は COM IDL で次のように定義されます。

[id(0x0000023c), propget, helpcontext(0x0001023c)]
HRESULT Workbooks([out, retval] Workbooks** RHS);

このメソッドは、Workbooks COM インタフェースを実装するオブジェクトの参照を返します。 Workbooks インタフェースは _Application インタフェースと同じ型ライブラリに定義されているので、com2java ツールは作成する _Application Java インタフェースに次のメソッドを生成します。

/**
* getWorkbooks.
*
* @return return value. An reference to a Workbooks
* @exception java.io.IOException If there are communications problems.
* @exception com.bea.jcom.AutomationException If the remote server throws an exception.
*/
public Workbooks getWorkbooks () throws java.io.IOException, com.bea.jcom.AutomationException;

生成された _ApplicationProxy Java クラスのメソッドの実装が見えるようになります。

/**
* getWorkbooks.
*
* @return return value. An reference to a Workbooks
* @exception java.io.IOException If there are communications problems.
* @exception com.bea.jcom.AutomationException If the remote server throws an exception.
*/
public Workbooks getWorkbooks () throws java.io.IOException, com.bea.jcom.AutomationException{ com.bea.jcom.MarshalStream marshalStream = newMarshalStream("getWorkbooks");
marshalStream = invoke("getWorkbooks", 52, marshalStream);
Object res = marshalStream.readDISPATCH("return value"); Workbooks returnValue = res == null ? null : new WorkbooksProxy(res);
checkException(marshalStream, marshalStream.readERROR("HRESULT"));
return returnValue;
}

見て分かるとおり、このメソッドは生成された WorkbooksProxy Java クラスを内部的に利用します。 前述のとおり、com2java ツールは、Workbooks 戻り値型を持つメソッドを生成します。Workbooks インタフェースは _Application と同じ型ライブラリに定義されているからです。

Workbooks インタフェースが異なる型ライブラリに定義されている場合、WebLogic jCOM は次のコードを生成します。

/**
* getWorkbooks.
*
* @return return value. An reference to a Workbooks
* @exception java.io.IOException If there are communications problems.
* @exception com.bea.jcom.AutomationException If the remote server throws an exception.
*/
public Object getWorkbooks () throws java.io.IOException, com.bea.jcom.AutomationException;

この場合、生成されたプロキシ クラスを明示的に使用して返された Workbooks にアクセスする必要があります。

Object wbksObj = app.getWorkbooks();
Workbooks workbooks = new WorkbooksProxy(wbObj);

 

back to top previous page next page