示例:使用 ActiveX 客户机应用程序访问 Java 类或对象
您可以将 Java™ 代理对象与 ActiveX 到 Enterprise JavaBeans (EJB) 网桥配合使用。
将 Java 代理对象与 ActiveX 到 Enterprise JavaBeans (EJB) 网桥配合使用,如下所示:
- 在 ActiveX 客户机程序 (Visual Basic , VBScript 或 Active Server Pages (ASP)) 初始化 XJB.JClassFactory 对象,因此, Java 虚拟机 (JVM) ,客户机程序可以访问 Java 类并初始化 Java 对象。 完成此操作后,客户机程序使用 XJB.JClassFactory FindClass() 和 NewInstance() 方法。
- 在 Java 编程中,存在两种访问 Java 类的方法: 通过 Java 编译器和通过 Java 反射接口直接调用。 由于 ActiveX 到 Java 网桥无需编译,并且是 Java 代码的完整运行时接口,因此网桥依赖于后一个反射接口来访问其类,对象,方法和字段。 XJB.JClassFactory FindClass( ) 和 NewInstance( ) 方法的行为与 Java Class.forName( ) 以及 Method.invoke () 和 Field.invoke () 方法非常相似。
- XJB.JClassFactory.FindClass() 采用标准类名作为其唯一的参数并返回代理对象 (JClassProxy)。 您可以像使用普通 Java 类对象一样使用返回的 Proxy 对象,并调用静态方法和访问静态字段。 您还可以按此部分中后面的内容所述创建类实例(或对象)。 例如,以下 Visual Basic 代码抽取返回 java.lang.Integer Java 类的 Proxy 对象:
... 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 编程中的 ints 单元实际上是 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