`
wujianjun12315
  • 浏览: 112975 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

RMI实现分布式

阅读更多
现在虽然我们很少用到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

    JAVA分布式之RMI实例教程网络通信原理[收集].pdf

    一个RMI的分布式应用的实例

    在本例中,我们构建了一个基于 RMI 的分布式应用实例,旨在演示如何利用 RMI 实现分布式任务处理。 #### 二、RMI的核心组成部分 ##### 1. 定位远程对象 - **名字服务功能**:RMI 提供了名字服务功能,如 `java.rmi...

    基于Java RMI的分布式数据库系统的应用与研究.pdf

    综上所述,基于Java RMI的分布式数据库系统在设计与应用中,充分利用了Java语言的特点和RMI通信机制的优势,为实现高效、可靠、可扩展的分布式数据库系统提供了坚实的基础。随着技术的不断进步,分布式数据库系统的...

    基于RMI 的分布式议程服务

    远程方法调用(Remote Method Invocation,RMI)是Java平台中用于实现分布式计算的一种技术。它允许在不同的Java虚拟机(JVM)之间进行对象方法的调用,使得开发分布式应用程序变得更加简单。在本项目中,我们构建了...

    基于Java RMI的分布式数据库系统开发与应用.pdf

    通过使用Java RMI,可以实现分布式数据库系统的处理,提高系统的使用效率,降低系统的开发难度。 分布式数据库系统是指将多个计算机分为一组,通过网络将它们连接到一起,实现资源共享和协同工作的系统。分布式...

    基于 RMI 的分布式议程服务

    使用 Java RMI 构建一个分布式议程服务(agenda service)。不同的客户应能连接到这一共享的议程服务,并查询、添加和删除议程中的会晤(meeting)安排。服务程序应具备新用户注册、清除某一用户所有会晤安排等管理...

    基于Java_RMI的分布式WebGIS模型研究

    实现分布式WebGIS的主要技术包括: 1. **Java Servlets和JSP**:用于处理HTTP请求,生成动态Web内容,与后台数据库交互,以及与客户端的Java Applet或JavaScript进行通信。 2. **Java Applets**:在客户端运行的...

    基于MVC和RMI的分布式应用

    此外,通过RMI技术,store应用可以轻松地扩展为分布式系统,将数据存储和处理集中在高性能的服务器上,而将用户界面分布在多个客户端,实现资源的有效利用和负载均衡。 综上所述,基于MVC和RMI的分布式应用不仅能够...

    一种基于RMI得分布式架构设计

    基于RMI的分布式架构设计,详细描述了如何架构RMI分布式系统,并阐述了原理实现

    EX3_RMI分布式议程服务_principalk7z_

    Java RMI(Remote Method Invocation)是一种在Java平台上实现分布式计算的技术,它允许对象在不同的Java虚拟机(JVMs)之间进行远程调用。在这个"EX3_RMI分布式议程服务_principalk7z_"项目中,我们看到的是一个...

    基于RMI的分布式议程服务

    RMI是Java平台上的一个核心特性,允许Java对象在不同的Java虚拟机之间进行通信,从而实现分布式计算。通过RMI,开发者可以在一台机器上调用另一台机器上的对象方法,仿佛它们都在同一进程中运行,极大地简化了分布式...

    基于RMI的分布式消息传送模型

    RMI在实现系统分布式部署中起关键作用,但文档并未深入讨论RMI的技术细节。在实际部署时,尽管支持组件分布在不同服务器,但通常会将所有组件部署在同一台服务器上,以简化管理和优化性能。 该系统支持两种消息传送...

    基于RMI的分布式议程管理系统(问题分析+代码)

    远程方法调用(Remote Method Invocation,RMI)是Java平台上的一个重要工具,它允许在不同Java虚拟机(JVM)之间的对象进行交互,从而实现分布式计算。本项目“基于RMI的分布式议程管理系统”就是利用这一特性来...

    RMI分布式议程服务

    RMI(Remote Method Invocation)是Java平台上的一个关键特性,它允许Java对象在不同的网络进程中进行通信,从而实现分布式计算。在"RMI分布式议程服务"中,我们看到一系列批处理文件,这些文件用于执行特定的操作,...

    基于-JavaRMI的分布式计算.doc

    总结来说,Java RMI提供了实现分布式计算的有效工具,通过其强大的功能和简便的编程模型,使得开发人员能够轻松地构建跨越多台计算机的复杂系统,从而实现计算资源的共享和优化利用。在科学研究、工程计算、大数据...

    spring和RMI分布式整合源码

    在IT行业中,Spring框架与RMI(Remote Method Invocation,远程方法调用)的结合是构建分布式系统的一种常见方式。这个“spring和RMI分布式整合源码”可能包含了一个实际项目中如何将这两种技术融合的实例。现在,...

    rmi 会晤分布式实验

    RMI,全称为Remote Method Invocation,是Java平台提供的一种分布式计算模型,允许在不同的Java虚拟机(JVMs)之间进行方法调用,实现远程对象间的交互。这项技术使得开发者可以构建分布式应用,如同调用本地对象...

    论文研究-基于JavaRMI的分布式WebGIS模型研究.pdf

    WebGIS是当前GIS的技术热点,立足于WebGIS的分布式特性,在分析Java RMI特点以及优势的基础上,提出基于Java RMI的分布式WebGIS构造模型,并且详细介绍了空间数据模型、组件注册服务器等相关概念和主要实现技术。

Global site tag (gtag.js) - Google Analytics