1. RMI概念
RMI(Remote Method Invocation),远程方法调用,是Java的一组拥护开发分布式应用程序的API。RMI使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol)。简单地说,这样使原先的程序在同一操作系统的方法调用,变成了不同操作系统之间程序的方法调用,由于J2EE是分布式程序平台,它以RMI机制实现程序组件在不同操作系统之间的通信。比如,一个EJB可以通过RMI调用Web上另一台机器上的EJB远程方法。
2. 工作原理
在RMI中,调用远程对象的对象被称为客户机对象(Client Object)而远程对象被称为服务器对象(Server Object),同时引入了两种特殊类型对象,存根(stub)和框架(Skelton)。存根实际上是远程对象的客户端代理,它和远程对象具有相同的接口或方法列表,当客户端调用远程对象时,实际上是由相应的存根对象代理完成。在服务器端,框架对象处理“远方”的所有细节,完全可以像编写本地对象一样来编写远程对象。框架将远程对象从RMI基础结构分离开来。也就是说,客户端获得的只是代理对象,并不是服务器上的类型,只不过它实现了服务器上类型的全部功能。
3. 实例
实现简单的查单词功能,一台应用服务器以RMI的方式向客户端提供英译汉词典的服务。
创建一个简单的Java分布式远程方法调用程序可以按以下几个步骤操作:
1)定义远程接口
2)实现远程接口
由于只是简单的示例,故词典使用map来存储,当然也可以构造专门的词典文件或者从数据库中查询。
3)编写服务器类
4)编写客户端类
4. 运行结果
服务器端和客户端分别运行在两台机子上
服务器端运行结果
客户端运行结果
分享到:
相关推荐
RMIScout可以对暴露的Java RMI接口进行单词列表和蛮力攻击,从而无需调用即可安全地猜测方法签名。它支持多种Java RMI协议,方法调用和利用。 功能概述 支持多种类型的Java RMI服务器: RMI-JRMP(又称纯RMI;通常...
通过使用蛮力(单词列表)方法识别现有的远程方法 使用用户指定的参数调用远程方法(无需编码) 在参数内使用ysoserial小工具调用远程方法 使用客户端指定的代码库调用远程方法(远程类加载攻击) 使用ysererial...
* RMI (Remote Method Invocation):远程方法调用,是一种允许 Java 程序调用远程对象的方法的机制。 * CVS (Concurrent Versions System):版本控制器,是一种管理软件代码的版本的系统。 * SVN (Subversion):版本...
26. **DWR (Direct Web Remoting)**:DWR允许在浏览器和服务器之间进行直接的JavaScript到Java的远程调用。 27. **JIT (just-in-time)**:JIT编译器将字节码在运行时转换为机器码,以提高性能。 28. **...
Hessian是一个轻量级的远程的数据交换工具,使用简单的方法提供了RMI(远程方法调用)的功能. 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据 ...
分布式特性让Java能够处理TCP/IP协议,并支持远程方法调用(RMI),便于网络上的程序交互。安全性和健壮性体现在其内置的内存管理、异常处理机制上,确保了程序的稳定运行。多线程功能则增强了程序的并发执行能力,...
6. **RMI (Remote Method Invocation)**:RMI允许Java对象在不同的Java虚拟机之间进行远程调用,实现分布式计算。 7. **JMS (Java Message Service)**:JMS是Java消息服务,提供了一种标准的方式来创建、发送、接收...
堆栈信息则能够提供方法调用的堆栈追踪,帮助定位性能瓶颈和程序中的死锁情况。 标签“java jmc”指明了这个工具是与Java语言紧密相关的,同时也意味着用户应当具备一定的Java和JVM(Java虚拟机)知识,以便更好地...
12. **RMI (Remote Method Invocation)**:RMI允许JAVA对象在不同的JVM之间进行远程调用,支持分布式计算。 13. **CVS (Concurrent Versions System), SVN (Subversion)**:这两个都是版本控制系统,用于跟踪文件和...
23. **RMIDemo**: `rmidemo`展示了Java的远程方法调用(RMI)技术,包含客户端和服务端的实现。 24. **Spring Boot**: `springboot2listmybatisdemo`等几个Spring Boot项目展示了如何集成MyBatis、Mybatis Plus、...
- **分布式**:Java支持分布式计算,如远程方法调用(RMI)。 - **动态性**:Java允许在运行时进行扩展,可以动态地加载类库。 - **多线程**:Java内置了多线程的支持,使得并发处理变得简单。 - **安全性**:Java...