例: ActiveX クライアント・アプリケーションを使用した Java クラスまたはオブジェクトへのアクセス
ActiveX to Enterprise JavaBeans (EJB) ブリッジで Java™ プロキシー・オブジェクトを使用することができます。
以下のように、 ActiveX to Enterprise JavaBeans (EJB) ブリッジで Java プロキシー・オブジェクトを使用します。
- ActiveX クライアント・プログラム (Visual Basic、VBScript、または Active Server Pages (ASP)) が XJB.JClassFactory オブジェクト、つまり Java 仮想マシン (JVM) クライアント・プログラムは、Java クラスにアクセスし、Java オブジェクトを初期化することができます。 このアクションを完了するには、 クライアント・プログラムは XJB.JClassFactory FindClass() メソッドおよび NewInstance() メソッドを使用します。
- Java プログラミングで Java クラスにアクセスするには、Java コンパイラーを介した直接呼び出しと Java リフレクション・インターフェースを介した直接呼び出しの 2 つの方法があります。 ActiveX to Java ブリッジはコンパイルを必要とせず、Java コードに対する完全なランタイム・インターフェースであるため、ブリッジは、後者のリフレクション・インターフェースに依存して、そのクラス、オブジェクト、メソッド、およびフィールドにアクセスします。 XJB.JClassFactory FindClass( ) と NewInstance( ) メソッドは、Javaの Class.forName( ) と Method.invoke () と Field.invoke () メソッドと非常によく似た動作をする。
- XJB.JClassFactory.FindClass() は、その唯一のパラメーターとして完全修飾クラス名をとり、
プロキシー・オブジェクト (JClassProxy) を戻します。 通常の Java クラス・オブジェクトと同様に、返されたプロキシー・オブジェクトを使用して、静的メソッドを呼び出し、静的フィールドにアクセスすることができます。 このトピックで後に説明するように、クラス・インスタンス (すなわちオブジェクト) を作成することもできます。 例えば、以下の Visual Basic コード抽出は、 java.lang.Integer Java クラスのプロキシー・オブジェクトを戻します。
... Dim clsMyString as Object Set clsMyString = oXJB.FindClass("java.lang.Integer") - プロキシーが作成されたら、その静的情報に直接アクセスすることができます。 例えば、次のコード抽出を使用して、10 進整数を 16 進表記に変換することができます。
... Dim strHexValue as String strHexValue = clsMyString.toHexString(CLng(255))
- 同等の Java 構文は、
static String toHexString(int i)です。 Java プログラミングの ints 単位は実際には 32 ビット (Visual Basic では Long に変換される) であるため、CLng () 関数は値をデフォルトの int から long に変換します。 また、toHexString() 関数が java.lang.String を戻す場合であっても、 コード抽出はオブジェクト・プロキシーを戻しません。 代わりに、戻された java.lang.String は、 固有の Visual Basic string に自動的に変換されます。クラスからオブジェクトを作成するには、 JClassFactory.NewInstance() メソッドを使用します。 このメソッドにより、オブジェクト・インスタンスが作成され、 クラスのコンストラクターが必要とするパラメーターがすべて使用されます。 いったんオブジェクトが作成されると、 その全 public インスタンス・メソッドおよびフィールドにアクセスすることができます。 例えば、次の Visual Basic コード抽出を使用して、 java.lang.Integer ストリングのインスタンスを作成することができます。... Dim oMyInteger as Object set oMyInteger = oXJB.NewInstance(CLng(255)) Dim strMyInteger as String strMyInteger = oMyInteger.toString