关于Java的RMI编程的一个简单的例子

原创 2003年10月10日 23:14:00

现在虽然我们很少用到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入门实例

RMI是Java的一组拥护开发分布式应用程序的API。RMI使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol...
  • h348592532
  • h348592532
  • 2014年10月17日 13:24
  • 2060

浅谈RMI - 搭建一个简单的RMI程序

RMI是Remote Method Invoke的缩写,是JDK提供的一个完善的、简单易用的远程调用框架,它要求客户端和服务器端都是Java程序。下面简述RMI的基本原理:如下图所示,RMI采用代理来...
  • xiaoyaoyulinger
  • xiaoyaoyulinger
  • 2016年05月19日 11:50
  • 2242

【java】【多态】的一个小例子

首先要了解什么是多态? :在面向对象语言中,接口的多种不同的实现方式即为多态。具体来说,就是不同子类作为参数使用同一父类的方法 时的实现方法是不同的。   多态的表现形式有哪些? 1.重载ov...
  • NeoAdrian
  • NeoAdrian
  • 2016年04月10日 14:41
  • 2354

java RMI简单例子

  • 2012年02月08日 13:33
  • 7KB
  • 下载

JAVA RMI简单例子

  • 2010年12月30日 20:43
  • 12KB
  • 下载

[Java] 演示RMI(远程方法调用) 的一个例子

[原文链接] 这里讲述的是基于JDK1.5的RMI程序搭建,更简单的说是一个 HelloWorld RMI。 1. 这里是基于JDK1.5的,节省了繁琐的手工编译(生成桩和骨架)。不像1....
  • joyeu
  • joyeu
  • 2014年12月08日 20:54
  • 381

通过一个小例子了解Java RMI

RMI使得程序员能够在分布式系统软件开发中使用所有的面向对象编程的功能,如对象、类、继承的使用。        JavaRMI扩展了Java的对象模型,对象由服务器管理,客户端通过远程方法调用来调用...
  • DXZCZH
  • DXZCZH
  • 2017年05月08日 10:28
  • 165

Java WebSocket编程——一个简单的例子(编程式)

第一步:创建WebSocket端点(服务器端) ①编写Java类继承Endpoint类 /** * */ package com.webSocket.demo; import java.io....
  • MemphyChan
  • MemphyChan
  • 2016年01月18日 16:48
  • 1694

一个简单的java socket编程例子

关于scoekt的一些介绍,请参加dunia
  • SSWDG123456
  • SSWDG123456
  • 2014年06月11日 18:39
  • 604

自制简单的Java下载器——来自《Java高级编程》的一个关于线程的例子(带上部分注释)

这俩天看《Java高级编程》,看到下面这例子,觉得挺适合新手学习Thread的,所以记录下来,供向我这样的菜鸟学习学习,大牛可以直接忽略。 想法:完善并提高此程序的功能,做个专属自己的下载器。(20...
  • Cannel_2020
  • Cannel_2020
  • 2012年02月14日 23:54
  • 5509
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于Java的RMI编程的一个简单的例子
举报原因:
原因补充:

(最多只允许输入30个字)