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

相关推荐

    rmi_iiop.zip_rmi

    RMI-IIOP是RMI与IIOP的结合,它将RMI的接口和IIOP的网络通信机制融合,提供了跨Java平台的透明性。 在RMI实例中,我们通常会遇到以下几个关键概念: 1. **远程接口**:远程接口定义了客户端可以调用的远程方法。...

    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 RMI入门教程

    7. `java.rmi.CORBA`: 提供RMI-IIOP的轻量级API,以及与RMI-IIOP运行时的交互接口。 定位远程对象的过程通常涉及RMI的命名服务,比如使用Java Naming and Directory Interface (JNDI)。客户端在编写时需要知道提供...

    J2EE中常见术语解释

    本文介绍了J2EE中几个核心概念,包括RMI、CORBA、RMI-IIOP、JNDI以及STUB与SKELETON。通过理解这些概念,可以帮助开发者更好地理解和使用J2EE框架及其相关技术。此外,对于如何选择合适的远程通信方式(RMI vs 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-...

    rmi接口技术详细介绍文档

    6. `java.rmi`: RMI-IIOP的核心API,支持RMI与CORBA之间的交互。 7. `java.rmi.CORBA`: 提供RMI-IIOP的轻量级API,用于RMI-IIOP的插件和连接。 ### 定位远程对象 在RMI中,定位远程对象通常通过JNDI(Java Naming ...

    《EJB-RMI入门》

    《EJB-RMI入门》是一本专注于讲解Java企业级应用开发技术的书籍,特别是针对RMI(Remote Method Invocation,远程方法调用)的使用。...对于遇到的问题,可以参考《RMI-IIOP 和 JNDI 教程》等资源,以加深理解和应用。

    JAVA rmi教学课件

    6. `java.rmi`和`java.rmi.CORBA`:RMI-IIOP相关API,RMI-IIOP是RMI的一种扩展,它使用CORBA协议进行通信,常用于EJB环境。 定位远程对象的过程通常涉及使用RMI命名服务,如通过JNDI(Java Naming and Directory ...

    JNDI 详细解读

    为了更好地解决远程对象查找的问题,Java 社区开发出了 RMI 和 RMI-IIOP 技术,而 JNDI 技术则是在此基础上进一步发展而来,它使得查找远程或本地对象变得更加方便。 #### 三、JNDI 支持的服务 JNDI 可以访问多种...

    RMI教程(PPT)

    `java.rmi.activation`用于激活对象,`java.rmi.dgc`涉及分布式垃圾收集,`java.rmi.registry`是RMI网络命名服务的API,`java.rmi.server`提供服务器端操作的支持,`java.rmi`和`java.rmi.CORBA`则与RMI-IIOP(RMI...

    Java 2 高级程序设计百事通.pdf

    书中涵盖了广泛的主题,包括JavaBeans、Java安全技术、Java命名与目录服务、RMI远程方法调用、CORBA公共对象请求代理、RMI-IIOP、Servlet服务器小程序、JSP网页技术等核心内容。 JavaBeans是Java编程中的重要组件...

    基于RMI的Java远程调用.zip

    它可能会涵盖常见问题,如处理异常、优化性能、使用RMI-IIOP(RMI over IIOP,一种在CORBA基础设施上运行RMI的方式)以及与Java Naming and Directory Interface (JNDI)的集成。 总的来说,RMI是Java平台上的一个...

    Java RMI远程方法调用

    9. **RMI-IIOP**:RMI还可以与CORBA(Common Object Request Broker Architecture)的IIOP(Internet Inter-ORB Protocol)协议集成,实现更广泛的互操作性。 10. **优化与性能**:在实际应用中,可能需要考虑RMI的...

    幻灯片——J2EE架构和技术概览

    - **远程方法调用协议**:RMI-IIOP实现了RMIAPI上的IIOP协议,允许开发者用Java编程语言编写远程接口。 - **对象管理组织协议**:Java IDL(Interface Definition Language),用于定义对象之间的接口。 #### 四、...

    J2EE应用程序开发指南

    - **核心技术**:J2EE的核心技术主要包括EJB(Enterprise JavaBeans)、JSP(Java Server Pages)、Servlets、JNDI(Java Naming and Directory Interface)、JMS(Java Message Service)、RMI-IIOP(Remote Method...

    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 ...

    EJB java

    从给定的文件信息中,我们可以提取...EJB与RMI、JNDI、AOP和IOC等技术紧密集成,提供了一种结构化的方式来构建大型分布式应用程序。然而,EJB的学习曲线较陡峭,需要深入理解其架构和工作原理才能充分利用其全部潜力。

Global site tag (gtag.js) - Google Analytics