弥补和 COM 的缝隙
2010-04-01 00:00:00 来源:WEB开发网图 1 展示 Bridge2Java 如何把 Java 命令传送到 COM 服务器的纵览。
图 1. Bridge2Java 纵览
一个样本应用程序:建桥
使用 Bridge2Java 的第一步是把 COM 服务器的接口、方法和属性转换成 Java 代理对象和方法。这是由代理生成器(包括 Bridge2Java)完成的,并且要求用户为 COM 服务器定位 typelib。( typelib 仅仅是 COM 服务器程序员提供的便利;它为 COM 服务器提供了所有接口、方法和属性的有序清单。)Bridge2Java 代理生成器遍历 typelib,并为它所发现的每一个 IDispatch 接口生成 Java 对象。这样创建的每一个 Java 对象包含来自自 IDispatch 接口的所有方法和属性。属性将被生成为 get_ 和 set_ 方法,例如 get_Visible() 和 set_Visible(BOOL visible) 。
我们的样本应用程序将展示 Java 开发者如何能使用 Bridge2Java 和 COM 调用 Lotus 1-2-3 功能。清单 1 展示了来自代理生成器的片段。这个示例类是用于我们应用程序指向 Lotus 1-2-3 的 IDispatch 接口。(1-2-3 的 typelib 称为 L123TYP.TLB )。
这个示例中有几个重要的事情值得注意。一个是列在文件上部的 cslid ;这是 IDispatch 接口的唯一标识并是 COM 访问注册表找到 Lotus 1-2-3 位置时使用的值。当 Bridge2Java 启动 1-2-3 时,COM 传回一个指向 IDispatch 接口的指针,它将被随后的 Invoke() 调用所利用来和 COM 服务器通信。
“Java 到 COM”过程的另一个重要部分是创建并初始化包含传入值和类型的 Jvariant 类。 invoke_method() 调用通常创建几个 Jvariant ,用于每一个传入的参数。在只返回一个值的情况下, Jvariant 就被隐式地创建并且只传回返回值。
更多精彩
赞助商链接