ICE生成类的详解

博客主要提及了服务器和客户端两方面内容,但未给出具体信息。服务器和客户端是信息技术领域常见概念,服务器为客户端提供服务,客户端向服务器请求服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务器:

▪   <interface-name>.java
    这个源文件声明在ICE文件中定的接口名称的Java接口,如这里是Printer。
▪   _<interface-name>Operations.java
▪   _<interface-name>OperationsNC.java
    这是两个定义操作的接口文件,每个接口文件中定义了一个操作实现,定义的操作与Slice接口中定义的操作相一致,只是在_<interface-name>Operations.java中定义的方法多了一个参数“Ice.Current __current”(注:Current对象的定义,请参见3.1.1版本文档中的31.6 The Ice::Current Object说明),这个参数的作用是可以允许我们访问 “正在执行的请求”和 “服务器中的操作的实现”等信息,也就是我们的请求需求需要其它请求的支持时或者要获取其它请求的执行结果时,我们可以调用这个方法,这两个接口文件都会被接口文件_<interface-name>.java继承。
▪   _<interface-name>Disp.java 
    这个文件包含的是服务器端骨架类的定义,所用接口定义都要继承这个东西,这里的接口指供客户端调用的接口。
▪   <interface-name>PrxHolder.java 
    代理定义holder 类,是对应Out参数使用的。一般参数都是值传递,这个类的作用是使参数通过引用传递。ICE框架应用了很多反射机制,这个类是改变远程参数的一个映射。

客户端:

▪   _<interface-name>Del.java
▪   _<interface-name>DelD.java
▪   _<interface-name>DelM.java
    不用关心上面的这些文件,这些文件包含的是供Java 映射内部使用的代码;它们包含的功能与应用程序无关。
▪   <interface-name>Prx.java 
    这个是代理接口。例如PrinterPrx,在客户的地址空间中, PrinterPrx 的实例是“远地的服务器中的Printer接口的实例”的“本地大使”。与服务器端对象有关的所有细节,比如其地址、所用协议、对象标识,都封装在该实例中。
     注意:PrinterPrx 继承自Ice.ObjectPrx。这反映了这样一个事实:所有的Ice 接口都隐式地继承自Ice::Object。
     说的更明白些,就是这个类的方法调用都是远程服务端的调用,执行printString()方法的具体实现是在远程服务端执行的。
▪   <interface-name>PrxHelper.java 
    这个是接口的代理定义助手类,就是帮你获得代理类的。经常用的就两个方法checkedCast 和 uncheckedCast 。这两个方法实现的都是向下转换。
    注意: checkedCast 会联系服务器。这是必要的,因为只有服务器情况中的代理实现确切地知道某个对象的类型。所以, checkedCast 可能会抛出ConnectTimeoutException 或ObjectNotExistException(这也解释了为何需要助手类:ICE在运行时必须联系服务器,所以我们不能使用Java 的向下转换)。
    与此相反, uncheckedCast 不会联系服务器,而是会无条件地返回具有所请求的类型的代理 。但是,如果你要使用uncheckedCast,你必须确定这个代理真的支持你想要转换到的类型;而如果你弄错了,你很可能会在调用代理上的操作时,引发运行时异常。对于这样的类型失配,最后可能会引发OperationNotExistException,但也有可能引发其他异常,比如整编异常。而且,如果对象碰巧有一个同名的操作,但参数类型不同,则有可能根本不产生异常,你最后就会把调用发送给类型错误的对象;这个对象可能会做出非常糟糕的事情。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值