`

RMI 底层实现

    博客分类:
  • java
 
阅读更多
1.

server端代码:
Registry registry= LocateRegistry.createRegistry(8888); //在当前主机的port如8888上创建RMI的Registry注册服务。

registry.bind("RHello",rhello); //注册服务


//或者可以用下边的方式,这样可以指定要注册的服务所在的host地址。
//Naming.bind("rmi://localhost:8888/RHello",rhello);





client端代码:

IHello rhello =(IHello) Naming.lookup("rmi://localhost:8888/RHello");


2. 个人理解:

其实主要是java的rmi接口的具体实现将网络层的相关实现封装起来了。
暴露给程序员的接口主要是 怎么进行注册和查找。
具体的原理实现在底层,和网络技术,计算机底层相关。

为了通过Java的序列化机制来进行传输,远程接口中的方法的参数和返回值,要么是Java的基本类型,要么是远程对象,要么是实现了 Serializable接口的Java类。当客户端通过RMI注册表找到一个远程接口的时候,所得到的其实是远程接口的一个动态代理对象。当客户端调用其中的方法的时候,方法的参数对象会在序列化之后,传输到服务器端。服务器端接收到之后,进行反序列化得到参数对象。并使用这些参数对象,在服务器端调用实际的方法。调用的返回值Java对象经过序列化之后,再发送回客户端。客户端再经过反序列化之后得到Java对象,返回给调用者。这中间的序列化过程对于使用者来说是透明的,由动态代理对象自动完成。除了序列化之外,RMI还使用了动态类加载技术。当需要进行反序列化的时候,如果该对象的类定义在当前JVM中没有找到,RMI会尝试从远端下载所需的类文件定义。可以在RMI程序启动的时候,通过JVM参数java.rmi.server.codebase来指定动态下载Java类文件的URL。
分享到:
评论

相关推荐

    java RMI实现代码

    1. 易于使用:RMI提供了简单的API,开发者只需关注业务逻辑,无需关心底层网络通信细节。 2. 高效:Java的序列化机制使得数据传输效率较高。 3. 安全:基于Java的安全模型,可以进行细粒度的权限控制。 缺点: 1. ...

    RMI实现的远程调用

    总的来说,Java RMI是一种强大的工具,允许开发者构建分布式系统,它简化了网络编程的复杂性,使得开发者可以专注于业务逻辑,而无需过多关注底层通信细节。理解并掌握RMI技术对于构建可扩展、健壮的Java分布式应用...

    RMI的JAVA实现

    综上所述,RMI是Java开发分布式应用程序的关键工具,它通过简单的API隐藏了底层的网络复杂性,使开发者能够专注于业务逻辑。了解和掌握RMI,对于构建健壮的分布式系统至关重要。在实际项目中,我们可以通过不断的...

    RMI.rar_Java RMI_java.rmi_java.rmi.Remot_remote

    总之,Java RMI是构建分布式Java应用的重要工具,它简化了网络通信的复杂性,让开发者可以专注于业务逻辑,而不是底层网络实现。虽然现代的Java框架如Spring、EJB等提供了更高级别的分布式服务,但理解RMI的基本原理...

    Java RMI设计实现的分析与研究.pdf

    总的来说,Java RMI提供了一种强大的工具,使得开发者可以轻松地构建和扩展分布式应用程序,而无需关心底层网络通信的复杂性。通过理解RMI的基本原理和实现步骤,开发者能够更好地利用这项技术来提升应用的可扩展性...

    java_rmi.rar_RMI java_java.rmi

    RMI负责处理网络通信和数据序列化,开发者只需关注业务逻辑,无需关心底层网络细节。 这个"java_rmi.rar"压缩包包含的资源可能是一个Java RMI的实例教程或者代码示例。"www.pudn.com.txt"可能是一个包含相关说明...

    java rmi java rmi

    3. **传输层**:最底层处理实际的数据传输,通常使用Java的Socket API来实现。 ### RMI编程 #### 定义远程接口 在实现RMI之前,首先需要定义一个远程接口。这个接口必须继承自`java.rmi.Remote`接口,并且声明...

    rmi实例(Spring整合)

    在IT行业中,远程方法调用...同时,理解RMI的底层原理和Spring的相关配置,对于提升系统性能和可靠性至关重要。在实际开发中,结合源码阅读和使用工具,如IDE的调试功能,可以帮助我们更好地理解和优化RMI服务。

    JavaRMI.pdf

    RMI的核心思想是通过接口隐藏底层网络通信的复杂性,使得程序员可以像操作本地对象一样操作远程对象。 在RMI中,远程接口扮演着至关重要的角色。当需要创建一个远程对象时,程序员会定义一个继承自`java.rmi.Remote...

    Spring 实现远程访问详解——rmi

    7. JMS:远程访问通过类JmsInvokerServiceExporter和JmsInvokerProxyFactoryBean使用JMS的底层协议实现。 二. 远程访问------RMI 1. RMI远程访问基本流程 1). 服务端定义远程访问接口; 2). 服务端通过...

    rmi与spring整合实例

    - `RmiProxyFactoryBean`用于创建一个RMI客户端代理,该代理可以像本地对象一样调用远程对象的方法,隐藏了底层的网络通信细节。 4. 整合步骤: - 定义远程接口和实现:首先,我们需要定义一个远程接口,并在...

    RMI.rar_chat rmi_java rmi chat_rmi _rmi 聊天

    - **网络通信(Networking)**:RMI负责底层的网络通信,包括序列化参数和返回值,以及异常处理。 在"chapter3"中,可能包含了实现这些组件的源代码。例如,可能有`ChatServer.java`(服务器实现)、`ChatService....

    web服务器 RMI meeting

    在Web服务器与RMI结合的场景中,Socket可以作为底层通信机制,使得Web服务器能够通过RMI与远程服务进行通信。 在"web服务器 RMI meeting sokect"的会议中,可能的讨论点包括: 1. 如何在Web服务器上实现RMI服务,...

    RMI原理及应用详解

    2. **EJB(Enterprise JavaBeans)**: EJB容器利用RMI作为底层通信机制,使得组件能够在不同的JVM间透明交互。 3. **Web服务器与应用服务器间的通信**: 如Servlets通过RMI与EJB交互。 4. **网格计算**: 在大规模...

    RMI应用实例及实验报告

    RMI的优点在于它简化了跨JVM的通信,使得开发者能够专注于业务逻辑,而不是底层网络通信细节。然而,RMI也存在一些限制,如不支持异步调用,且性能可能受到网络延迟的影响。 在这个实验中,我们不仅学习了如何创建...

    rmi接口技术详细介绍文档

    RMI的目标是使得分布在网络上的对象能够像本地对象一样工作,实现位置透明性,隐藏底层复杂的网络通信细节。这种技术允许开发者在不关心对象实际位置的情况下,调用远程对象的方法。 ### RMI的基本结构 RMI的核心...

    RMI远程方法调用RMI远程方法调用

    RMI使得开发分布式应用程序变得简单,因为开发者不需要关注底层网络通信的细节,而是专注于业务逻辑的实现。 **RMI架构** RMI架构包含了以下几个主要组件: 1. **远程接口**:定义了可以被远程调用的方法,这个接口...

    RMI会议管理系统代码

    在RMI系统中,Socket通信作为底层传输机制,确保数据在网络中的安全传输。Socket编程为RMI提供了网络连接的基础,使得客户端和服务端能够进行双向通信。同时,由于RMI是基于Java的,因此它还利用了Java的序列化机制...

    java-RMI技术讲解

    相比于传统的RPC,RMI进一步简化了分布式对象之间的通信机制,使得开发者能够更加专注于业务逻辑而不用担心底层通信细节。 #### 2. RMI的用途 RMI主要用于分布式Java应用程序之间的远程通信。其核心优势在于: - ...

    JAVA RMI

    在网格计算或云计算中,RMI可以作为节点间通信的底层机制。 总结,Java RMI为Java开发者提供了一种简单、高效的分布式计算解决方案,通过RMI,开发者可以轻松地构建跨JVM的分布式应用程序,实现对象间的远程方法...

Global site tag (gtag.js) - Google Analytics