示例:使用 ActiveX 客户机应用程序访问 Java 类或对象
您可以使用 Java™ 代理对象ActiveX至企业JavaBeans (EJB)桥。
使用 Java 代理对象ActiveX至企业JavaBeans (EJB)桥,如下所示:
- 经过ActiveX客户端程序(Visual Basic、VBScript 或 Active Server Pages (ASP))已初始化XJB.JClassFactory对象,从而 Java 虚拟机 (JVM),客户端程序可以访问 Java 类并初始化 Java 对象。 完成此操作后,客户机程序使用 XJB.JClassFactory FindClass() 和 NewInstance() 方法。
- 在 Java 编程中,访问 Java 类有两种方式:通过 Java 编译器直接调用和通过 Java 反射接口调用。 因为ActiveXJava 桥接器不需要编译并且是 Java 代码的完整运行时接口,该桥接器依赖于后者的反射接口来访问其类、对象、方法和字段。 这XJB.JClassFactoryFindClass( ) 和NewInstance( ) 方法的行为与 JavaClass.forName( )和Method.invoke() 和Field.invoke() 方法。
- XJB.JClassFactory.FindClass() 采用标准类名作为其唯一的参数并返回代理对象 (JClassProxy)。 您可以像普通 Java 类对象一样使用返回的 Proxy 对象,调用静态方法和访问静态字段。 您还可以按此部分中后面的内容所述创建类实例(或对象)。 例如,以下 Visual Basic 代码摘录返回一个 Proxy 对象java.lang.IntegerJava 类:
... Dim clsMyString as Object Set clsMyString = oXJB.FindClass("java.lang.Integer") - 在创建代理之后,您可以直接访问其静态信息。 例如,您可以使用以下代码摘录将十进制整数转换为它的十六进制表示法:
... Dim strHexValue as String strHexValue = clsMyString.toHexString(CLng(255))
- 等效的 Java 语法是:
static String toHexString(int i)。 因为 Java 编程中的 int 单位实际上是 32 位(在 Visual Basic 中转换为 Long),所以 CLng() 函数将值从默认的 int 转换为 long。 同样,即使 toHexString() 函数返回 java.lang.String,该代码摘录不返回 Object 代理。 相反,自动将返回的 java.lang.String 转换为本机 Visual Basic 字符串。要从类创建对象,您使用 JClassFactory.NewInstance() 方法。 这个方法将创建一个对象实例,并采用您的类构造函数所需的任何参数。 一旦创建了对象,您对其全部公用实例方法和字段都有访问权。 例如,您可以使用以下 Visual Basic 代码摘录来创建 java.lang.Integer 字符串的实例:... Dim oMyInteger as Object set oMyInteger = oXJB.NewInstance(CLng(255)) Dim strMyInteger as String strMyInteger = oMyInteger.toString