`
jspengxue
  • 浏览: 178790 次
  • 性别: Icon_minigender_1
  • 来自: 天堂和地狱的中间
社区版块
存档分类
最新评论

RMI-IIOP与JNDI简单小结

阅读更多
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,该对象的根程序将被序列化传给远程主机,然后就可以根据根程序来请求远程对象了,任何时候根程序所持有的数据都是同远程主机相同的。
分享到:
评论

相关推荐

    cobra-rmi-iiop:Cobra协议中的分布式对象范例和远程方法调用的示例

    眼镜蛇RMI-IIOP示例应用程序 该存储库是分布式应用程序中的和的概念证明(POC)。 例如 , , 和 api。 它是协议的替代方法。 该应用程序允许您使用spring gui和命令行管理电话簿。 关于RMI-IIOP RMI-IIOP (称为...

    EJB应用开发详解+书中源码

    全书以剖析EJB 2.0的技术核心以及开发与部署的过程为中心,共分3大部分20章,包括无状态会话Bean、有状态会话Bean、CMP实体Bean、EJB QL语言、集成RMI-IIOP与JNDI、应用客户端开发、EJB部署、持久化EJB与CORBA的集成...

    Java中的EJB编程实例代码

    内容有:简单的EJB、无状态SessionBean、有状态SessionBean、BMP位图实例、cmp实例、Message-Driven Bean、JNDI的使用、112各种EJB之间的调用、B-S结构EJB、 C-S结构EJB、UML建模与J2EE开发、RMI and RMI-...

    Java中Enterprise JavaBeans(EJB)编程实例代码.rar

    内容有:简单的EJB、无状态SessionBean、有状态SessionBean、BMP位图实例、cmp实例、Message-Driven Bean、JNDI的使用、112各种EJB之间的调用、B-S结构EJB、 C-S结构EJB、UML建模与J2EE开发、RMI and RMI-...

    JavaSE-6.0-英文手册(2008/11/30_FullUpdate)

    Libraries IDL JDBCTM JNDITM RMI RMI-IIOP Scripting Other Base Libraries Beans Intl Support I/O JMX JNI Math Networking Override Mechanism Security Serialization Extension Mechanism XML JAXP ...

    JAVA笔试总结 -- 非常全面

    JAVA笔试总结 非常全面 基本上囊括了Java所有常考知识点,并且每个知识点都有详细解释。 知识点主要包括: native,transient,volatile,strictfp,CMM,...JDBC驱动,加密解密与安全架构,RMI/IIOP, JTA, JDO等等。

    JBoss Application Server

    The J2EE platform manages the infrastructure and supports the Web services to enable development of secure, robust and interoperable business ... CORBA Integration (RMI/IIOP, IDL, EJB-CORBA Mapping

    J2EE应用开发详解

    218 12.1.3 RMI的优点 219 12.2 一个RMI的简单实例 219 12.3 小结 226 第13章 Web服务概论 227 13.1 SOA简介 227 13.2 Web服务简介 229 13.3 Web服务的核心技术 230 13.3.1 SOAP 232 13.3.2 WSDL 235 13.3.3 UDDI ...

    h_JAVA 2应用编程150例.rar

    实例117 C/S结构的RMI-IIOP应用 414 实例118 使用JTA与JTS 417 实例119 Request-Reply模式的JMS应用 421 实例120 使用Java IDL 426 实例121 EJB与CORBA的交互 430 实例122 基于EJB的真实世界模型 433 实例123 EJB的...

    jdk-9.0.1_doc-all 最新版

    Defines the Java binding of the OMG CORBA APIs, and the RMI-IIOP API. java.datatransfer Defines the API for transferring data between and within applications. java.desktop Defines the AWT and Swing ...

    基于J2EE的介绍

    •RMI/ IIOP(远程过程调用/因特网ORB间协议):友情链接本地Java的RPC机制,CORBA,并允许非Java系统访问EJB。 •XML技术(JAXP,SAAJ,JAX-RPC等):一个完整的技术套件操纵XML和构建基于标准的XML Web服务。 •...

    java7帮助文档

    Libraries IDL JDBC JNDI RMI RMI-IIOP Scripting Other Base Libraries Beans Int'l Support Input/Output JMX JNI Math Networking Override Mechanism Security Serialization Extension Mechanism XML JAXP ...

    CJ2EETools-开源

    一组用于处理J2EE应用程序服务器的工具。 它包括通用的JDBC数据源实现,以及用于通过独立的Web容器访问远程应用程序服务器的jndi / rmi / iiop多路复用器

    java应用软件程序设计

    405 实例115 与时间有关的函数 407 实例116 EJB与UML的对应关系 412 实例117 C/S结构的RMI-IIOP应用 414 实例118 使用JTA与JTS 417 实例119 Request-Reply模式的JMS应用 421 实例120 使用Java IDL...

    java 面试题 总结

    EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技术实现。 SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来...

    超级有影响力霸气的Java面试题大全文档

    EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技术实现。 SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来...

    java面试题

    59.7. RMI/IIOP 41 60. JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗? 41 61. MVC的各个部分都有那些技术来实现?如何实现? 42 62. java中实现多态...

Global site tag (gtag.js) - Google Analytics