rmi在jdk1.5之前使用是非常复杂的,需要做6个步骤:1.定义和实现远端接口中的参数。2.定义和实现远程接口。3.编写服务端代码。4.编写客户端代码。5.生成stub和skeltion,并将stub打包到客户端jar中,将skeltion打包到服务端jar中。6.启动rmiregistry,并将服务注册到rmiregistry中,然后运行代码。还需要执行一些命令行程序,非常复杂。
在jdk1.5中,使用了动态代理技术,实现了动态生成stub和skeltion类,从而省去了相当多的繁琐工作,rmi的创建和发布已经变得非常简单。
只需以下四个步骤:
第一、创建接口,必须继承Remote接口
import java.rmi.*;
/**
* 远程接口必须扩展接口java.rmi.Remote
*/
public interface HelloInterface extends Remote
{
/**
* 远程接口方法必须抛出 java.rmi.RemoteException
*/
public String say() throws RemoteException;
}
第二、创建业务类,此类必须实现上面定义的接口和实现UnicastRemoteObject接口
import java.rmi.*;
import java.rmi.server.*;
/**
* 扩展了UnicastRemoteObject类,并实现远程接口 HelloInterface
*/
public class Hello extends UnicastRemoteObject implements HelloInterface
{
private String message;
/**
* 必须定义构造方法,即使是默认构造方法,也必须把它明确地写出来,因为它必须抛出出RemoteException异常
*/
public Hello(String msg) throws RemoteException
{
message = msg;
}
/**
* 远程接口方法的实现
*/
public String say() throws RemoteException
{
System.out.println("Called by HelloClient");
return message;
}
}
第三、服务端将需要发布出去的服务使用rmi进行注册,以便客户端可以查找到相应服务。
import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;
public class HelloServer
{
/**
* 启动 RMI 注册服务并进行对象注册
*/
public static void main(String[] argv)
{
try
{
//启动RMI注册服务,指定端口为1099 (1099为默认端口)
//也可以通过命令 $java_home/bin/rmiregistry 1099启动
//这里用这种方式避免了再打开一个DOS窗口
//而且用命令rmiregistry启动注册服务还必须事先用RMIC生成一个stub类为它所用
LocateRegistry.createRegistry(1099);
//创建远程对象的一个或多个实例,下面是hello对象
//可以用不同名字注册不同的实例
HelloInterface hello = new Hello("Hello, world!");
//把hello注册到RMI注册服务器上,命名为Hello
//Naming.rebind("Hello", hello);
//如果要把hello实例注册到另一台启动了RMI注册服务的机器上
Naming.rebind("//192.168.61.113:1099/Hello",hello);
System.out.println("Hello Server is ready.");
}
catch (Exception e)
{
System.out.println("Hello Server failed: " + e);
}
}
}
第四、客户端通过java.rmi.Naming进行查找自己需要的服务,查找到之后就可以像使用本地对象一样使用远程对象。
import java.rmi.Naming;
public class HelloClient
{
/**
* 查找远程对象并调用远程方法
*/
public static void main(String[] argv)
{
try
{
//HelloInterface hello = (HelloInterface) Naming.lookup("Hello");
//如果要从另一台启动了RMI注册服务的机器上查找hello实例
HelloInterface hello = (HelloInterface)Naming.lookup("//192.168.61.113:1099/Hello");
//调用远程方法
System.out.println(hello.say());
}
catch (Exception e)
{
System.out.println("HelloClient exception: " + e);
}
}
}
现在的rmi就是这么简单,而rmi是一切远程调用的核心,ejb也只不过是对rmi进行了包装而已。通过以上步骤,您就可以发布属于自己的rmi系统。
- bank.rar (135.2 KB)
- 描述: 使用rmi写的银行系统的小例子
- 下载次数: 4
分享到:
相关推荐
RMI远程方法调用是Java平台上的一个关键特性,它允许Java对象在不同的JVM之间进行通信,从而实现分布式计算。RMI的核心理念是让开发者能够像调用本地方法一样调用远程对象的方法,简化了分布式系统的设计和实现。 *...
这个简单的例子将引导我们了解如何利用Java RMI实现远程调用。 首先,我们要创建远程接口。在Java RMI中,远程接口是一个实现了`java.rmi.Remote`接口的Java接口。接口中声明的方法将在客户端调用,实际上会在...
### RMI远程调用代码及使用方法 #### 一、RMI简介 远程方法调用(Remote Method Invocation,简称RMI)是Java平台提供的一种分布式计算技术,它允许开发人员在不同的Java虚拟机(JVM)之间进行对象的远程调用。通过...
Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种分布式计算技术,它允许在不同的Java虚拟机之间透明地调用对象的方法。在RMI架构中,客户端能够像调用本地对象一样调用远程服务器上的对象...
4. ** stubs 和 skeletons**:在RMI中,远程对象的引用在客户端是通过stubs(桩)表示的,而实际的远程调用则由serverside的skeleton(骨架)处理。现代的JVM已经不再需要手动生成stubs和skeletons,它们由Java...
1. **创建远程接口**:定义一个继承自Remote的接口,声明需要远程调用的方法。 2. **实现远程接口**:编写一个类实现这个接口,提供具体的方法实现。 3. **注册远程对象**:在服务器端创建远程对象实例,然后将其...
Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种分布式计算技术,它允许在不同的Java虚拟机之间进行方法调用,仿佛这些方法是在本地对象上执行一样。这个技术极大地简化了构建分布式应用的...
Spring RMI(Remote Method Invocation)远程接口调用是Spring框架提供的一个特性,它允许你在分布式环境中调用对象的方法,使得应用程序能够跨越网络边界操作远程对象。这个技术在大型企业级应用中尤其有用,因为它...
Java远程调用(Remote Method Invocation,RMI)是Java平台中一种重要的分布式计算技术,它允许在不同网络环境中的Java对象之间进行透明的交互。在本文中,我们将深入探讨三种不同的RMI实现方法:原始方式、Spring...
这个压缩包文件“Spring+RMI”很可能包含了实现这样一个远程调用示例的所有必要组成部分,包括配置文件、接口定义、服务器端实现以及客户端调用代码。 首先,我们来理解一下Java RMI。RMI是Java提供的一种原生的...
RMI采用JRMP(Java Remote Method Protocol)通讯协议,是构建在TCP/IP协议上的一种远程调用方法。它允许运行在一个Java虚拟机上的对象调用运行在另一个Java虚拟机上的对象方法,从而使编程人员可以方便地在网络环境...
**RMI远程调用详解** 远程方法调用(Remote Method Invocation,简称RMI)是Java平台提供的一种机制,它允许一个Java对象调用另一个在不同Java虚拟机(JVM)上的对象的方法。RMI是Java分布式计算的核心技术,主要...
java jdk1.8; eclipse 开发环境;实现A机器的程序,可以管理(增加、删除、改等)B机器上的某个文件夹或者目录;掌握远程过程调用原理,基于...客户端利用RMI实现远程调用服务。同时,在在两台机器之间验证结果正确。
首先,我们需要定义一个实现了`java.rmi.Remote`接口的类,比如`MyRemoteInterface.java`,并在这个接口中声明所有需要远程调用的方法。这些方法必须抛出`java.rmi.RemoteException`,因为网络通信可能会出现异常。...
Java Remote Method Invocation (RMI) 是Java平台提供的一种用于创建分布式应用程序的技术,它允许对象在不同的JVM(Java虚拟机)之间通过网络进行方法调用。RMI的主要优点是其透明性,即开发者可以像调用本地方法...
RMI(Remote Method Invocation,远程方法调用)是Java平台上的一个核心特性,它允许Java对象在不同的JVM之间进行通信,实现分布式计算。RMI系统由两部分组成:服务端(Server)和客户端(Client)。服务端提供远程...
### Java RMI 用于远程调用 进行分布式开发 #### 概述 Java RMI(Remote Method Invocation)是Java平台提供的一种实现分布式计算的技术,它允许开发者在不同JVM间进行方法调用,如同调用本地对象一样简单。通过...
在“rmi远程调用读文件”的场景中,为了提高效率和安全性,可以考虑使用缓存策略,比如本地缓存最近或常用的文件内容,减少不必要的网络请求。另外,对于大文件,可以分块传输,避免一次性加载整个文件导致内存压力...
最近在学习代理模式,用到了java rmi远程调用,包含服务端和客户端,之前一直没有接触过,学习了java rmi远程调用,一方面可以了解代理模式,一方面熟悉java低层的远程