当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:16:00  来源:本站整理

用Java筹划COM客户[Java编程]

赞助商链接



  本文“用Java筹划COM客户[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
目前,让我们转到另一侧,并用Java开辟一个COM客户.这个程序会调用系统已安装的COM服务器内的服务.就目前这个例子来说,我们利用的是在前一个例子里为服务器实现的一个客户.固然代码在Java程序员的眼中看起来对比熟习,但在幕后发生的一切却并不平常.本例利用了用Java写成的一个服务器,但它可利用于系统内安装的任何ActiveX控件、ActiveX Automation服务器大概ActiveX组件——只要我们有一个范例库.
首先,我们将Jactivex工具利用于服务器的范例库.Jactivex有一系列选项和开关可供挑选.但它最基本的情势是读取一个范例库,并生成Java源文件.这个源文件保存于我们的windows/java/trustlib目录中.通过下面这行代码,它利用于为外部COM Automation服务器生成的范例库:

jactivex /javatlb JavaAdder.tlb

Jactivex完成今后,我们再来看看自己的windows/java/trustlib目录.此时可在此中看到一个新的子目录,名为javaadder.这个目录包含了用于新包的源文件.这是在Java里与范例库的功效差不多的一个库.这些文件需求利用Microsoft编译器的专用指导号令:@com.jactivex生成多个文件的缘由是COM利用多个实体来描写一个COM服务器(另一个缘由是我没有对MIDL文件和Java/COM工具的利用举行具体的调整).
名为Adder.java的文件等价于MIDL文件中的一个coclass指导号令:它是对一个COM类的声明.其他文件则是由服务器揭暴露来的COM接口的Java等价物.这些接口(比方Adder_DispatchDefault.java)都属于“遣送”(Dispatch)接口,属于Automation掌握器与Automation服务器之间的沟通机制的一部份.Java/COM集成特点也支持双接口的实现与利用.但是,IDispatch和双接口的问题已超越了本附录的范围.
在下面,大家可看到对应的客户代码.第一行只是导入由jactivex生成的包.然后成立并利用COM Automation服务器的一个实例,就象它是一个原始的Java类那样.请注意行内的范例模子,此中“例示”了COM对象(即生成并调用它的一个实例).这与COM对象模子是一致的.在COM中,程序员永久不会得到对整个对象的一个引用.相反,他们只能拥有对类内实现的一个或多个接口的引用.
“例示”Adder类的一个Java对象今后,就相当于指导COM激活服务器,并成立这个COM对象的一个实例.但我们随后必须指定自己想利用哪个接口,在由服务器实现的接口中挑选一个.这恰是范例模子完成的工作.这儿利用的是“默许遣送”接口,它是Automation掌握器用于同一个Automation服务器通信的尺度接口.欲理解这方面的细节,请参考由Ibid编著的《Inside COM》.请注意激活服务器并挑选一个COM接口是多么简单!
import javaadder.*;

public class JavaClient {
  public static void main(String [] args) {
    Adder_DispatchDefault iAdder =
         (Adder_DispatchDefault) new Adder();
    iAdder.setAddend(3);
    iAdder.sum();
    iAdder.sum();
    iAdder.sum();
    System.out.println(iAdder.getResult());
  }
}
目前,我们可以编译它,并开始运路程序.

1. com.ms.com包
com.ms.com包为COM的开辟定义了数目众多的类.它支持GUID的利用——Variant(变体)和SafeArray Automation(安全数组自动)范例——能与ActiveX控件在一个较深的层次打交道,并可掌握COM非常.
由于篇幅有限,这里不大概触及全部这些主题.但我想侧重夸大一下COM非常的问题.按照标准,几近全部COM函数城市返回一个HRESULT值,它奉告我们函数调用能否成功,以及失利的缘由.但假如察看服务器和客户代码中的Java办法签名,就会发现没有HRESULT.相反,我们用函数返回值从一些函数那边取回数据.“虚拟机”(VM)会将Java气势的函数调用转换成COM气势的函数调用,乃至包含返回参数.但假如我们在服务器里调用的一个函数在COM这一级失利,又会在虚拟机里呈现什么事情呢?在这种情形下,JVM会认为HRESULT值标志着一次失利,并会产生类com.ms.com.ComFailException的一个固有Java非常.这样一来,我们便可用Java非常掌握机制来管理COM错误,而不是查抄函数的返回值.
如欲深化理解这个包内包含的类,请参考微软公司的产品文档.
  以上是“用Java筹划COM客户[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 利用Javascript实现网页水印(非图片水印)
  • <b>如安在Oracle中利用Java存储历程</b>
  • 用Java实现自动在数据库表中生成ID号
  • 利用javascript获得浏览器中的星号密码办法
  • 用javabean来实现MySQL的分页显示
  • 用Java 1.1 AWT制作窗口和程序片
  • 用Java ME举行无线消息传送
  • <b>用Java筹划COM服务器</b>
  • 用Java筹划COM客户
  • <b>用Java程序生成文本的捷径</b>
  • 用Java实现FTP服务器办理策划
  • 用Java实现多线程服务器程序
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .