ice异常ObjectNotExistException及Servant之理解

15 篇文章 0 订阅
5 篇文章 0 订阅

今天在公司调试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 可以向一个或更多对象适配器注册

 

 

 

 

统计

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值