Java RMI-IIOP(java remote method invocation over the internet inter-ORB protocol),如果使用过RMI,就应该很清除RMI是Java执行远程方法调用的方式,而RMI-IIOP则是RMI的功能扩展版本,增加了如:分布式垃圾收集,对象活化,可下载类文件等,所以你可以把RMI理解成为RMI-IIOP的简化版本,在分布式对象方法调用上他们都完成了最基本的功能。

J2ee中强制使用RMI-IIOP,所以你在RMI-IIOP和RMI中没有的选择

为了便于理解,先介绍一些基本概念:

-RPC(远程过程调用) 是从一个机器上的过程启用另一个机器上的过程

-接口 定义对象所公开的信息

-实现 是由对象提供的核心逻辑程序

-RMI 所有网络代码都是应用于接口的,而不是执行代码,换句话说,就是所有的网络代码都是提供给远程过程调用的。

那么RMI-IIOP是怎样完成远程方法调用的呢?

RMI-IIOP的目的其实很明确,就是在调用远程机器上的对象时就像调用任何其他的Java对象一样,视网络的存在为一种透明。RMI-IIOP是如何实现这一功能的呢?很简单,RMI-IIOP把远程对象的调用模拟成本地对象的调用,即所谓的根程序(stub),根程序负责接收对象方法的本地调用,由于本地通过根程序调用,所以网络的复杂问题都被隐藏在它后面了;那么远程对象如何处理能让调用它的机器得到对应的实现呢?其实处理的方式和客户机一样,远程对象通过一个所谓的程序框架(Skeleton)负责接收网络传发过来的调用。如此以来远程调用的过程其实就发生在根程序和程序框架之间,关于他们是由RMIC(RMI编译器)来生成,具体的实现过程我们就不用管了。根程序和程序框架的功能是处理参数,而参数由如何传送呢?

可能你曾听说过对象序列化的概念,顾名思义,把对象变成能在网络上传输的一些有序信号,这就涉及到如何变,又如何还原的问题了,即所谓的编组和解组的问题。我们首先来看看参数传递吧!当调用方法时,有两种主要的传递参数的方法,值传递和引用传递。值传递是当产生调用过程时,远程主机先实例化一个对象T的一个新拷贝T1,然后可能修改这个拷贝的值T2,此时对象T是不会发生变化的,然后把需要的对象T2从远程传回来;而引用是对原对象T的远程引用,并不是对象引用的一个拷贝,所以当可能修改远程引用为T2时,远程对象也从T变成了T2,这个引用使用一个引用传递调用的协定完成,这于Java语言不同,Java中的用一个对象参数正常的调用一个方法时,拷贝的是对象的引用而不是对象的真实数据,这里一定要注意理解哦。接下来的问题又出来了,一个对象通过网络传递了,但该对象引用了其他对象,并不只孤身一个,那么在目标机上怎样处理呢?目标机的内存地址可不会和引用的机器内存地址映射啊!这就轮到对象序列化上场了,可见每一种技术的产生都是为了处理新的问题,但是人类往往是新问题处理了又会凭空增加新问题处理以后的问题,所以做人辛苦呢,可能一生都在问题中处理着,这让我想到了庄子随意之态,如果我们不去处理问题,问题永远仅仅就那么点,也不会有新问题,更不会越来越复杂,不知道那个时候的世界会是什么样子!瞎扯了,言规正转,刚才说道对象序列化,其实很简单,就是将一个Java对象转化为一个描述该对象的位块(bit-blob),对象变成位块时就可以随意的传了,其实也就是把一系列Java引用打包了,怎样序列化,我想你应该很清楚吧,就是实现java.lang.Serializable接口,做到这一步就可以了,Java会处理余下可序列化和解序列化的问题了。

小结一下:当远程调用时,所有的JAVA简单的基本类型都是用值传递,即参数拷贝传递,不影响原始数据,要用值传递必须实现java.lang.Serializable接口。如果要使用引用传递就必须实现java.rmi.remote,该对象的根程序将被序列化传给远程主机,然后就可以根据根程序来请求远程对象了,任何时候根程序所持有的数据都是同远程主机相同的。解决了远程调用的问题,下一部就是需要远程调用的客户由如何定位远程主机呢?

转载于:https://www.cnblogs.com/liaomin416100569/archive/2010/03/22/9331923.html

RMI-IIOP与JNDI简单小结相关推荐

  1. 名词解释WEB,EJB,JNDI,JMS,JTA,JAF,RMI/IIOP

    web容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接更容器中的环境变量接口交互,不必关注其它系统问题.主要有WEB服务器来实现.例如:TOMCAT, ...

  2. 计算机组装与维护手写笔记,科学网—计算机技术的简单小结 - 熊伟的博文

    我的博客已经搬家到 xiongbox.com  欢迎访问熊伟博士的网站! 1.计算机技术是指计算机领域中所运用的技术方法和技术手段.计算机技术具有明显的综合特性,它与电子工程.应用物理.机械工程.现代 ...

  3. 后端基础入门技术栈简单小结(非常简单)

    后端基础入门技术栈简单小结(非常简单) 本文章同步更新于: 简书:https://www.jianshu.com/p/c8c6f10850e2 CSDN:https://blog.csdn.net/Z ...

  4. Comparator简单小结

    Comparator 简单小结 一般Java中通过接口实现两个对象的比较,比较常用就是Comparable接口和Comparator接口 两者区别 Comparator位于包java.util下,而C ...

  5. 信用评分的简单小结(ROC,IV,WOE)

    转自:http://chen.yi.bo.blog.163.com/blog/static/150621109201011115616880/ 由于专业的关系,我学习信用评分的时候往往最关注模型那一块 ...

  6. java rmi 例子_RMI最简单的一个实例

    RMI最简单的一个实例 2008年06月21日 星期六 下午 07:30 1.    RMI最简单的一个实例,思路是你在服务器端创建一个方法addData(),该方法实现两个整数的相加,然从客户端远程 ...

  7. python小结_python简单小结

    笔者对于python常用的语法知识做了小结,不是很全面,希望能给各位带来帮助. 1.同一级代码的缩进必须保持一致,需要缩进的位置使用":" 2.raw_input函数 eg:nam ...

  8. 藏地传奇真言专题简单小结

    先来个传送门:藏地传奇-真言专题.话说搞这个专题也折腾了不少时间,看似简单的页面,实际也隐藏着大大小小的坑.下面请听我一一道来. 一.先从布局说起 真言专题页采用的布局是屡见不鲜的瀑布流.其实当时一接 ...

  9. 【python】查看图像位深度,以及改变图像位深度的简单小结

    every blog every motto: Just live your life cause we don't live twice. 0. 前言 关于图像位深度,色深的小结 说明: 有不对的地 ...

最新文章

  1. 实例:加载图片并添加文本水印
  2. C4C的Rich text editor的JavaScript实现
  3. 微软Project Springfield团队的F#使用心得
  4. 服务器如何返回429状态,Instagram远程服务器返回一个错误:(429)UNKNOWN STATUS CODE...
  5. js进阶 12-5 jquery中表单事件如何使用
  6. pureMVC简单示例及其原理讲解四(Controller层)
  7. python爬虫绕过验证码_爬虫怎样绕过验证码?
  8. Canal Mysql同步至ES/Hbase只有新增时生效,修改删除不生效
  9. .NET APlayer播放器 demo
  10. 注册表把html设置成桌面,[注册表] 将Windows 10默认应用程序设置页面添加到桌面右键菜单中...
  11. python数据可视化柱状图_python数据可视化示例柱状图
  12. java sleep 精度,java – Thread.sleep(x)是否足以在Android中用作时钟?
  13. Linux之web服务搭建静态网页------综合练习
  14. tensorflow keras 构建神经网络、Alex net、VGG、CNN网络
  15. python主函数_python main函数
  16. 维视智造机器视觉表面缺陷检测技术
  17. Linux下根据关键字搜索最后一条日志
  18. 雨量传感器开发:MLX75310光照检测与雨滴感应RLS
  19. vs code里面的less插件一直报错_ipad4现在怎么登微信?一直显示微信版本过低怎么办...
  20. RFC2617- HTTP Authentication自译本-(3) (转)

热门文章

  1. 【趣说】IT人的职场艰难,全藏在气氛组里!
  2. oracle导出库压缩参数,oracle数据库的定时备份:导出 压缩 归类
  3. mysql最常用的索引_mysql常用索引
  4. Serverless 解惑——函数计算如何访问 Mongo 数据库
  5. 技术解析系列 PouchContainer Goroutine Leak 检测实践
  6. python进行矩阵计算公式_纯python进行矩阵的相乘运算的方法示例
  7. python2和3的编码区别_Python2和3字符编码的区别
  8. 台式计算机属于,pc机属于什么型计算机
  9. python requests text content_python requests的content和text方法的区别
  10. python培训比较好的机构有哪些-上海python培训比较好的机构