ice异常ObjectNotExistException及Servant之理解

来源:互联网 发布:java 静态内部类的好处 编辑:程序博客网 时间:2024/05/16 05:22

今天在公司调试ice的时候,出现了一个ObjectNotExistException的异常,这个异常是server返回给client,

server是用java编写的,client是用php编写的,用ice来实现php和java的协作。

遇到ObjectNotExistException这样的异常,当时google了一下,知道是客户请求所包含的对象标识没有对应的条

目,也就是连接已经建好了,但是client请求的对像不存在,所以才有这样的异常。当时只是略看了一下,没有作仔细阅读,也没有完全弄明明白白,回家后感觉到老是有点放不下

 

如果要把原理弄清楚,下面这几天必须清楚

活动Servant 映射表,也叫active servant map,简称为asm

这个表的数据结构有点像路由表,网络的路由表就是这种结构

每个对象适配器都维护有一个叫作活动servant 映射表,就是asm

用于把对象标识映射到servant,

 

当客户把操作调用发给服务器时,请求的目标是特定的传输端点。传输端

点隐含地标识了请求所针对的对象适配器(因为同一个端点只能绑定到一

个对象适配器)。客户藉以发送请求的代理含有对应的对象的标识,客户

端run time 会在线路上随调用一起发送这个对象标识。对象适配器继而使

用这个对象标识、在它的ASM 中查找正确的servant,把调用分派给它。

如上图所示。

 

Servant

 

servant 是Ice 对象的物理体现,也就是说,它们是

用具体的编程语言实现的实体,并且在服务器的地址空间中进行实例化。

Servants 为“客户发送的操作调用”提供服务器端行为。

同一个servant 可以向一个或更多对象适配器注册

 

 

 

 

统计

原创粉丝点击