RMI是java最基本的分布式计算模型。这是一种最简单的方法实现分布式计算和远程调用。
数次碰壁以,找到一不错的教程,在此进行简单解读:
原文地址:
http://www.bitscn.com/pdb/java/200605/22375.html
服务的约定接口,需要扩展Remote接口
import java.rmi.Remote;
public interface Calculator extends Remote
{
public long add(long a, long b)
throws java.rmi.RemoteException;
public long sub(long a, long b)
throws java.rmi.RemoteException;
public long mul(long a, long b)
throws java.rmi.RemoteException;
public long div(long a, long b)
throws java.rmi.RemoteException;
}
服务器端实现类
import java.rmi.server.UnicastRemoteObject;
public class CalculatorImpl extends UnicastRemoteObject implements Calculator
{
// 这个实现必须有一个显式的构造函数,并且要抛出一个RemoteException异常
public CalculatorImpl()
throws java.rmi.RemoteException {
super();
}
public long add(long a, long b)
throws java.rmi.RemoteException {
return a + b;
}
public long sub(long a, long b)
throws java.rmi.RemoteException {
return a - b;
}
public long mul(long a, long b)
throws java.rmi.RemoteException {
return a * b;
}
public long div(long a, long b)
throws java.rmi.RemoteException {
return a / b;
}
}
程序入口,服务器启动类
import java.rmi.Naming;
public class CalculatorServer {
public CalculatorServer() {
try {
Calculator c = new CalculatorImpl();
Naming.rebind("rmi://localhost:1099/CalculatorService", c);
} catch (Exception e) {
System.out.println("Trouble: " + e);
}
}
public static void main(String args[]) {
new CalculatorServer();
}
}
客户端程序
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.net.MalformedURLException;
import java.rmi.NotBoundException;
public class CalculatorClient {
public static void main(String[] args) {
try {
Calculator c = (Calculator)
Naming.lookup(
"rmi://localhost
/CalculatorService");
System.out.println( c.sub(4, 3) );
System.out.println( c.add(4, 5) );
System.out.println( c.mul(3, 6) );
System.out.println( c.div(9, 3) );
}
catch (MalformedURLException murle) {
System.out.println();
System.out.println(
"MalformedURLException");
System.out.println(murle);
}
catch (RemoteException re) {
System.out.println();
System.out.println(
"RemoteException");
System.out.println(re);
}
catch (NotBoundException nbe) {
System.out.println();
System.out.println(
"NotBoundException");
System.out.println(nbe);
}
catch (
java.lang.ArithmeticException
ae) {
System.out.println();
System.out.println(
"java.lang.ArithmeticException");
System.out.println(ae);
}
}
}
OK,现在代码已经完整了。接下来看看具体启动。
1 在该服务器实现类的路径下执行以下命令
>rmic CalculatorImpl
rmic 程序可以将CalculatorImpl生成Calculator_stub.class
2 在程序的目录执行
>rmiregistry
3 新建一个策略文件policy.txt(文本)
grant {
permission java.security.AllPermission "", "";
};
这是最简单的授权策略,授权所有权限。若果在正式的生产环境,应该按照具体需求具体配置。
4 启动服务端
> java -Djava.security.policy=policy.txt CalculatorServer
5 启动客户端
> java -Djava.security.policy=policy.txt CalculatorClient
如果所有的这些都成功运行,你应该看到下面的输出:
1
9
18
3
如果在执行那两个可执行文件的时候发现找不到程序,请检查好path环境变量配置好没有。
另外
rmiregistry在执行后请勿关闭。
完
分享到:
相关推荐
这个“RMI基础代码小程序”很可能是为了演示如何使用RMI进行基本的远程通信。 在Java RMI中,有以下几个核心概念: 1. **远程接口(Remote Interface)**:这是定义远程方法的接口,它扩展了java.rmi.Remote接口。...
### RMI基础教程:系统运行机理深度解析 #### RMI概述与应用场景 RMI(Remote Method Invocation)是Java平台提供的一种远程方法调用技术,它允许在不同JVM(Java虚拟机)上的对象互相通信,就如同本地调用一样...
总之,RMI是Java分布式计算的基础之一,虽然在现代开发中可能不如其他技术流行,但对于理解分布式系统原理和Java远程通信仍然具有重要的学习价值。通过深入学习和实践RMI,开发者可以更好地掌握分布式应用的设计和...
"RMI基础教程 - 深海有约 - BlogJava.files"和"rmi入门教程,简单明了(转).files"可能包含了相关的源代码或者图片资源,帮助读者更好地理解和实践RMI编程。 通过深入阅读这些资料,你可以了解如何设置RMI环境,...
1. RMI基础知识:解释RMI的概念,介绍其工作原理,包括客户端和服务端的角色。 2. 创建远程接口:讲解如何定义远程接口,它是远程方法调用的合同。 3. 实现远程对象:介绍如何实现远程接口,并创建远程对象实例,...
1. Java RMI基础:理解RMI的基本概念,如远程接口、远程对象、注册表以及传输协议。 2. RMI Lite简化点:分析源代码,找出与标准RMI相比,rmi-lite做了哪些简化和优化。 3. Ant构建工具:熟悉Ant的配置文件结构,...
1. RMI基础: - RMI的核心概念是远程对象,它是一个可以在不同JVM上执行的方法的代理。 - 远程接口定义了可以在远程对象上调用的方法,需要继承`java.rmi.Remote`接口。 - 实现远程接口的类是远程对象的具体实现...
5. **启动RMID服务**:确保服务器上运行着RMID守护进程,它是RMI基础设施的一部分。 6. **客户端调用**:在客户端,通过`Naming.lookup()`或`InitialContext`查找服务器上的`BankService`,然后就可以像调用本地...
1. **RMI基础**: - **远程接口**:RMI的核心是远程接口,它定义了可以在远程对象上调用的方法。这些接口使用`java.rmi.Remote`作为父接口,并且声明抛出`java.rmi.RemoteException`。 - **远程对象**:实现远程...
#### 二、RMI基础知识 在深入理解给定示例之前,我们首先简要介绍一些RMI的基础概念: 1. **接口**: 在RMI中,接口必须继承自`java.rmi.Remote`接口,并声明所有可能抛出`RemoteException`的方法。 2. **服务端实现*...
企业级JavaBeans(EJB)是在RMI基础上发展起来的,提供了更高级的服务,如事务管理、安全性、生命周期管理和资源池等。 **RMI的优化** 在实际应用中,可能需要优化RMI性能,如减少远程调用次数,使用批量调用,或者...
### RMI基础 RMI 是Java平台上的一个标准API,用于创建分布式应用程序。它允许Java对象在不同的JVM之间进行交互,仿佛它们在同一台机器上运行。RMI的核心概念包括:远程接口、远程对象和远程方法调用。 ### 动态...
### RMI基础知识与实践 #### 一、Java RMI简介 Java Remote Method Invocation (RMI) 是Java平台提供的一种分布式计算技术,允许开发者在不同Java虚拟机(JVM)之间调用远程对象的方法,从而实现分布式应用程序的...
一、RMI基础概念 1. 远程接口(Remote Interface):定义了远程对象需要暴露的方法,这些方法将在远程服务器上执行。 2. 远程实现(Remote Implementation):实现了远程接口的类,是实际执行远程方法的对象。 3. ...
一、Spring整合RMI基础 1.1 RMI原理:RMI的核心在于Java的`java.rmi`包,它定义了接口和类来创建远程对象并进行调用。远程对象需继承`java.rmi.Remote`接口,并声明所有远程方法抛出`java.rmi.RemoteException`。 ...
### Java RMI基础知识与示例解析 #### 一、RMI简介 远程方法调用(Remote Method Invocation,简称RMI)是Java平台提供的一种用于实现分布式应用的技术。它允许对象在不同的JVM之间通过网络相互调用对方的方法,就...
- **RMIHelloWorld.rar**:这是一个RMI基础示例的压缩包,通常包含了一个简单的RMI客户端和服务器端的源代码,帮助初学者理解RMI的基本工作原理和交互流程。通过解压并运行这个例子,你可以看到RMI如何实现远程方法...
1. **RMI基础概念**: - **远程对象**:在RMI中,远程对象是可以在网络上访问的对象,它们可以跨JVM边界调用方法。 - **接口定义**:定义远程对象需通过接口,该接口必须声明为`remote`,并包含`throws java.rmi....
1. **RMI基础知识**:RMI是Java提供的一种标准API,用于在分布式环境中调用远程对象的方法。它包括三个主要步骤:定义远程接口、实现远程接口和服务端绑定远程对象到RMI注册表、客户端通过注册表查找并调用远程对象...