现在虽然我们很少用到RMI进行编程,但是做为Java一个最早的分布式解决方案,我们还是有了解的必要,从例子开始吧(虽然是几年前的了)!
远程接口RmiHelloRemoteIntfc .java
import java.rmi.*;
public interface RmiHelloRemoteIntfc extends Remote
{
String helloRemoteObj(String client) throws RemoteException;
}
远程接口的实现类RmiHelloRemoteObj.java
import java.rmi.server.*;
import java.rmi.*;
public class RmiHelloRemoteObj extends UnicastRemoteObject implements RmiHelloRemoteIntfc
{
public RmiHelloRemoteObj() throws RemoteException
{
super();
}
public String helloRemoteObj(String client) throws RemoteException
{
return "Hello World"+client;
}
}
服务器类RmiHelloServer.java
import java.io.*;
import java.rmi.*;
import java.rmi.server.*;
import sun.applet.*;
import java.rmi.registry.LocateRegistry;
public class RmiHelloServer
{
public RmiHelloServer()
{
}
public static void main(String[] args)
{
//创建并安装安全管理器
if(System.getSecurityManager()==null)
{
System.setSecurityManager(new RMISecurityManager());
}
try{
//创建远程对象
RmiHelloRemoteObj ttt=new RmiHelloRemoteObj();
//启动注册表
LocateRegistry.createRegistry(2222);
//奖名称绑定到对象
Naming.rebind("//Fangm:2222/helloObj",ttt);
System.out.println("RMI服务器正在运行。。。。。。");
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
服务器端的权限文件RmiHelloServer.policy
grant codeBase
"file:/e:/download/rmitest/"
{
permission java.net.SocketPermission
"*:1000-9999","accept,connect,listen,resolve";
};
现在就看看Client端是如何连接服务器和进行远程方法的调用的吧
import java.rmi.*;
import java.rmi.server.*;
public class RmiHelloClient
{
public RmiHelloClient()
{
}
public static void main(String[] args)
{
//创建并安装安全管理器
if(System.getSecurityManager()==null)
{
System.setSecurityManager(new RMISecurityManager());
}
try{
RmiHelloRemoteIntfc c1=(RmiHelloRemoteIntfc)Naming.lookup("rmi://Fangm:2222/helloObj");
System.out.println(c1.helloRemoteObj("Everyone"));
}
catch(Exception e)
{
e.printStackTrace();
}
System.exit(0);
}
}
Client端的权限文件RmiHelloClient.policy
grant codeBase
"file:/e:/download/rmitest/"
{
permission java.net.SocketPermission
"*:1000-9999","accept,connect,listen,resolve";
};
好了,一个最简单的RMI例子就安无了,对了还少了最重要的一步,那就是编译和运行呢?我们就来了个Bat或Cmd的批处理来进行吧,
看看RmiHello.bat吧
javac RmiHelloRemoteIntfc.java
javac RmiHelloRemoteObj.java
rmic RmiHelloRemoteObj
javac RmiHelloServer.java
javac RmiHelloClient.java
echo 在另一个窗口启动服务器,请稍后。。。
start java -Djava.security.policy=RmiHelloServer.policy RmiHelloServer
echo 运行客户程序。。。
java -Djava.security.policy=RmiHelloClient.policy RmiHelloClient
这个文件很简单吧!包你一试就通,虽然简单,不过对于初学者来说,还是很不错的哦!
分享到:
相关推荐
JAVA分布式之RMI实例教程网络通信原理[收集].pdf
在本例中,我们构建了一个基于 RMI 的分布式应用实例,旨在演示如何利用 RMI 实现分布式任务处理。 #### 二、RMI的核心组成部分 ##### 1. 定位远程对象 - **名字服务功能**:RMI 提供了名字服务功能,如 `java.rmi...
综上所述,基于Java RMI的分布式数据库系统在设计与应用中,充分利用了Java语言的特点和RMI通信机制的优势,为实现高效、可靠、可扩展的分布式数据库系统提供了坚实的基础。随着技术的不断进步,分布式数据库系统的...
远程方法调用(Remote Method Invocation,RMI)是Java平台中用于实现分布式计算的一种技术。它允许在不同的Java虚拟机(JVM)之间进行对象方法的调用,使得开发分布式应用程序变得更加简单。在本项目中,我们构建了...
通过使用Java RMI,可以实现分布式数据库系统的处理,提高系统的使用效率,降低系统的开发难度。 分布式数据库系统是指将多个计算机分为一组,通过网络将它们连接到一起,实现资源共享和协同工作的系统。分布式...
使用 Java RMI 构建一个分布式议程服务(agenda service)。不同的客户应能连接到这一共享的议程服务,并查询、添加和删除议程中的会晤(meeting)安排。服务程序应具备新用户注册、清除某一用户所有会晤安排等管理...
实现分布式WebGIS的主要技术包括: 1. **Java Servlets和JSP**:用于处理HTTP请求,生成动态Web内容,与后台数据库交互,以及与客户端的Java Applet或JavaScript进行通信。 2. **Java Applets**:在客户端运行的...
此外,通过RMI技术,store应用可以轻松地扩展为分布式系统,将数据存储和处理集中在高性能的服务器上,而将用户界面分布在多个客户端,实现资源的有效利用和负载均衡。 综上所述,基于MVC和RMI的分布式应用不仅能够...
基于RMI的分布式架构设计,详细描述了如何架构RMI分布式系统,并阐述了原理实现
Java RMI(Remote Method Invocation)是一种在Java平台上实现分布式计算的技术,它允许对象在不同的Java虚拟机(JVMs)之间进行远程调用。在这个"EX3_RMI分布式议程服务_principalk7z_"项目中,我们看到的是一个...
RMI是Java平台上的一个核心特性,允许Java对象在不同的Java虚拟机之间进行通信,从而实现分布式计算。通过RMI,开发者可以在一台机器上调用另一台机器上的对象方法,仿佛它们都在同一进程中运行,极大地简化了分布式...
RMI在实现系统分布式部署中起关键作用,但文档并未深入讨论RMI的技术细节。在实际部署时,尽管支持组件分布在不同服务器,但通常会将所有组件部署在同一台服务器上,以简化管理和优化性能。 该系统支持两种消息传送...
远程方法调用(Remote Method Invocation,RMI)是Java平台上的一个重要工具,它允许在不同Java虚拟机(JVM)之间的对象进行交互,从而实现分布式计算。本项目“基于RMI的分布式议程管理系统”就是利用这一特性来...
RMI(Remote Method Invocation)是Java平台上的一个关键特性,它允许Java对象在不同的网络进程中进行通信,从而实现分布式计算。在"RMI分布式议程服务"中,我们看到一系列批处理文件,这些文件用于执行特定的操作,...
总结来说,Java RMI提供了实现分布式计算的有效工具,通过其强大的功能和简便的编程模型,使得开发人员能够轻松地构建跨越多台计算机的复杂系统,从而实现计算资源的共享和优化利用。在科学研究、工程计算、大数据...
在IT行业中,Spring框架与RMI(Remote Method Invocation,远程方法调用)的结合是构建分布式系统的一种常见方式。这个“spring和RMI分布式整合源码”可能包含了一个实际项目中如何将这两种技术融合的实例。现在,...
RMI,全称为Remote Method Invocation,是Java平台提供的一种分布式计算模型,允许在不同的Java虚拟机(JVMs)之间进行方法调用,实现远程对象间的交互。这项技术使得开发者可以构建分布式应用,如同调用本地对象...
WebGIS是当前GIS的技术热点,立足于WebGIS的分布式特性,在分析Java RMI特点以及优势的基础上,提出基于Java RMI的分布式WebGIS构造模型,并且详细介绍了空间数据模型、组件注册服务器等相关概念和主要实现技术。