RMI

RMI

RMI(Remote Method Invocation,远程方法调用)是用Java在JDK1.2中实现的,它大大增强了Java开发分布式应用的能力。Java作为一种风靡一时的网络开发语言,其巨大的威力就体现在它强大的开发分布式网络应用的能力上,而RMI就是开发百分之百纯Java的网络分布式应用系统的核心解决方案之一。其实它可以被看作是RPC的Java版本。但是传统RPC并不能很好地应用于分布式对象系统。而Java RMI 则支持存储于不同地址空间的程序级对象之间彼此进行通信,实现远程对象之间的无缝远程调用。

RMI目前(Java Remote Messaging Protocol)进行通信。JRMP是专为Java的远程对象制定的协议。因此,Java RMI具有Java的"Write Once,Run Anywhere"的优点,是分布式应用系统的百分之百纯Java解决方案。用Java RMI开发的应用系统可以部署在任何支持JRE(Java Run Environment Java,运行环境)的平台上。但由于JRMP是专为Java对象制定的,因此,RMI对于用非Java语言开发的应用系统的支持不足。不能与用非Java语言书写的对象进行通信。

Java远程方法调用(Java RMI)是Java API对远程过程调用(RPC)提供的面向对象的等价形式,支持直接传输序列化的Java对象和分布式垃圾回收。远程方法调用可以看做是激活远程正在运行的对象上的方法的步骤。RMI对调用者是位置透明的,因为调用者感觉方法是执行在本地运行的对象上的。看下RMI的一些注意事项。

RMI体系结构的基本原则
RMI体系结构是基于一个非常重要的行为定义和行为实现相分离的原则。RMI允许定义行为的代码和实现行为的代码相分离,并且运行在不同的JVM上。

RMI体系结构
存根和骨架层(Stub and Skeleton layer):这一层对程序员是透明的,它主要负责拦截客户端发出的方法调用请求,然后把请求重定向给远程的RMI服务。
远程引用层(Remote Reference Layer):RMI体系结构的第二层用来解析客户端对服务端远程对象的引用。这一层解析并管理客户端对服务端远程对象的引用。连接是点到点的。
传输层(Transport layer):这一层负责连接参与服务的两个JVM。这一层是建立在网络上机器间的TCP/IP连接之上的。它提供了基本的连接服务,还有一些防火墙穿透策略。

**RMI中的远程接口(Remote Interface)**用来标识哪些方法是可以被非本地虚拟机调用的接口。远程对象必须要直接或者是间接实现远程接口。实现了远程接口的类应该声明被实现的远程接口,给每一个远程对象定义构造函数,给所有远程接口的方法提供实现。

RMI的绑定(Binding)
绑定是为了查询找远程对象而给远程对象关联或者是注册以后会用到的名称的过程。远程对象可以使用Naming类的bind()或者rebind()方法跟名称相关联。

让RMI程序能正确运行的步骤

  • 编译所有的源文件
  • 使用rmic生成stub
  • 启动rmiregistry
  • 启动RMI服务器
  • 运行客户端程序

RMI的stub扮演的角色
远程对象的stub扮演了远程对象的代表或者代理的角色。调用者在本地stub上调用方法,它负责在远程对象上执行方法。当stub的方法被调用的时候,会经历以下几个步骤:
初始化到包含了远程对象的JVM的连接。
序列化参数到远程的JVM。
等待方法调用和执行的结果。
反序列化返回的值或者是方法没有执行成功情况下的异常。
把值返回给调用者。

DGC叫做分布式垃圾回收。RMI使用DGC来做自动垃圾回收。因为RMI包含了跨虚拟机的远程对象的引用,垃圾回收是很困难的。DGC使用引用计数算法来给远程对象提供自动内存管理。

RMI中使用RMI安全管理器(RMISecurityManager)的目的
RMISecurityManager使用下载好的代码提供可被RMI应用程序使用的安全管理器。如果没有设置安全管理器,RMI的类加载器就不会从远程下载任何的类。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ehcache RMI 提供了一种自动化的远程方法调用(RMI)功能,它能够将 Ehcache 缓存的数据通过远程方法调用进行访问和操作。 Ehcache 是一个流行的 Java 缓存框架,用于提升应用程序的性能和响应速度。它能够在内存中缓存数据,减少对数据库或其他外部资源的频繁访问。然而,当多个应用程序运行在不同的服务器上,且它们之间需要共享和访问缓存数据时,就需要一种能够在不同服务器之间进行数据传输和方法调用的机制。 Ehcache RMI 提供了这样的机制。它通过 Java 的远程方法调用技术,将 Ehcache 缓存的数据和方法暴露给远程服务器。这样,远程服务器就能够通过网络访问 Ehcache 缓存数据,执行方法操作,而无需直接访问原始的数据库或其他资源。 Ehcache RMI 的自动化特性指的是,它能够自动处理远程方法调用的细节,如序列化和反序列化对象、传输数据、调用方法等。开发人员只需配置正确的网络地址和端口,并提供需要远程访问和操作的缓存数据和方法,Ehcache RMI 就会自动完成数据传输和方法调用的过程。 总结来说,Ehcache RMI 是一种能够自动化实现远程方法调用的机制,它利用 Java RMI 技术,通过网络访问和操作 Ehcache 缓存数据。开发人员只需进行简单的配置,Ehcache RMI 就能够自动处理远程方法调用的细节,方便实现多个应用程序之间的数据共享和访问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值