Java クラスおよびオブジェクトにアクセスするタスクの大部分は、 JClassProxy および JObjectProxy オブジェクトによって処理されます。このトピックでは、ActiveX から Enterprise Java Beans (EJB) へのブリッジのオブジェクト・クラスの参照情報について説明します。
JClassFactory は、Java 仮想マシン (JVM) の大部分の機能にアクセスするために使用されるオブジェクトです。 このオブジェクトは、JVM の初期化、クラスへのアクセス、 およびクラス・インスタンス (オブジェクト) の作成を処理します。 JClassProxy および JObjectProxy オブジェクトを使用して Java クラスおよびオブジェクトの大半にアクセスします。
通常 java.exe ファイルに送信するコマンド行パラメーターを表すストリングの配列を使用して、 JVM 環境を初期化します。
Error: 0x6002 "XJBJNI::Init() Failed to create VM" when calling XJBInit()C++ ロギングが使用可能になっていれば、 アクティビティー・ログが無効なパラメーターを表示します。
現行スレッドのクラス・ローダーを使用して、 指定された完全修飾クラス名をロードし、Java クラス・オブジェクトを表す JClassProxy オブジェクトを戻します。
JObjectProxy NewInstance(JClassFactory obj, Variant vArg1, Variant vArg2, Variant vArg3, ...) JObjectProxy NewInstance(JClassFactory obj, JMethodArgs args)
JMethodArgs オブジェクト (クラス・インスタンス) を戻します。
JClassProxy オブジェクトは、JClassFactory.FindClass() メソッドから作成できますが、 通常 Java クラス・オブジェクトを戻す任意の Java メソッド呼び出しからの作成も可能です。 ユーザーは、Java クラス・オブジェクトへの直接アクセス権を持っているかのように、 このオブジェクトを使用できます。 クラスの静的メソッドおよびフィールドはすべて、java.lang.Class メソッドとしてアクセス可能です。 反映されたユーザー・クラスの静的メソッド名と java.lang.Class (例えば、getName()) の静的メソッド名が競合する場合には、 反映された静的メソッドが最初に実行されます。
class foo{ foo(){}; public static String getName(){return "abcdef";} public static String getName2(){return "ghijkl";} public String toString2(){return "xyz";} }
... Dim clsFoo as Object set clsFoo = oXJB.FindClass("foo") clsFoo.getName() ' Returns "abcdef" from the static foo class clsFoo.getName2() ' Returns "ghijkl" from the static foo class clsFoo.toString() ' Returns "class foo" from the java.lang.Class object. oFoo = oXJB.NewInstance(clsFoo) oFoo.toString() ' Returns some text from the java.lang.Object's ' toString() method which foo inherits from. oFoo.toString2() ' Returns "xyz" from the foo class instance
JObjectProxy オブジェクトは、 JClassFactory.NewInstance() メソッドから作成できますが、 通常、クラス・インスタンス・オブジェクトを戻す、任意の Java メソッド呼び出しからの作成も可能です。 ユーザーは、Java オブジェクトへの直接アクセス権を持っているかのようにこのオブジェクトを使用でき、 オブジェクトのすべての静的メソッドとフィールドにアクセスできます。 オブジェクトのインスタンス・メソッドとフィールドはすべて、 アクセス可能です (継承によってアクセス可能なものも含めて)。
JMethodArgs オブジェクトは、JClassFactory.GetArgsContainer() メソッドから作成されます。 このオブジェクトを、メソッドおよびコンストラクター引数のコンテナーとして使用します。 メソッドの呼び出し時に、オブジェクト・タイプをオーバーライドする場合 (例えば、 通常は java.lang.Object タイプを取るコンストラクターに java.lang.String JProxyObject タイプを送信する場合) は、 このオブジェクトを使用しなければなりません。
コレクションに引数を追加するメソッドには、 Add と Set の 2 つのグループを使用できます。 Add は、宣言される順序で引数を追加する場合に使用できます。 あるいは、Set を使用して、引数リスト内の位置に基づいて (この場合、 最初の引数は、位置 1 にあります) 引数を設定することができます。
... Dim oArgs as Object set oArgs = oXJB.GetArgsContainer() oArgs.AddInt(CLng(12345)) oArgs.AddString("Apples") oArgs.AddObject("java.lang.Object", oSomeJObjectProxy) Dim clsFoo as Object Dim oFoo as Object set clsFoo = oXJB.FindClass("com.mypackage.foo") set oFoo = oXJB.NewInstance(clsFoo, oArgs) ' To reuse the oArgs object, just clear it and use the add method ' again, or alternatively, use the Set method to reset the parameters ' Here, we will use Set oArgs.SetInt(1, CLng(22222)) oArgs.SetString(2, "Bananas") oArgs.SetObject(3, "java.lang.Object", oSomeOtherJObjectProxy) Dim oFoo2 as Object set oFoo2 = oXJB.NewInstance(clsFoo, oArgs)
AddObject("java.lang.Object[][]", oMy2DArrayOfFooObjects)または
AddObject("int[]", oMyArrayOfInts)
次に使用可能になる位置で、プリミティブ byte 値を引数コンテナーに追加します。
次に使用可能になる位置で、プリミティブ boolean 値を引数コンテナーに追加します。
次に使用可能になる位置で、プリミティブ short 値を引数コンテナーに追加します。
次に使用可能になる位置で、プリミティブ int 値を引数コンテナーに追加します。
次に使用可能になる位置で、プリミティブ long 値を引数コンテナーに追加します。
次に使用可能になる位置で、プリミティブ float 値を引数コンテナーに追加します。
次に使用可能になる位置で、プリミティブ double 値を引数コンテナーに追加します。
次に使用可能になる位置で、プリミティブ char 値を引数コンテナーに追加します。
次に使用可能になる位置で、 ストリング・フォーム内の引数を引数コンテナーに追加します。
SetObject(1, "java.lang.Object[][]", oMy2DArrayOfFooObjects)または
SetObject(2, "int[]", MyArrayOfInts)
指定された位置で、プリミティブ byte 値を引数コンテナーに設定します。
指定された位置で、プリミティブ boolean 値を引数コンテナーに設定します。
指定された位置で、プリミティブ short 値を引数コンテナーに設定します。
指定された位置で、プリミティブ int 値を引数コンテナーに設定します。
指定された位置で、プリミティブ long 値を引数コンテナーに設定します。
指定された位置で、プリミティブ float 値を引数コンテナーに設定します。
指定された位置で、プリミティブ double 値を引数コンテナーに設定します。
指定された位置で、プリミティブ char 値を引数コンテナーに設定します。
指定された位置で、java.lang.String 値を引数コンテナーに設定します。
特定の引数位置で、引数の値を戻します。
コンテナーからすべての引数を除去し、 次に使用可能になる位置を 1 にリセットします。
コンテナー内の引数の数を戻します。