`
terrycong
  • 浏览: 22639 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

RMI基础

阅读更多
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基础代码小程序”很可能是为了演示如何使用RMI进行基本的远程通信。 在Java RMI中,有以下几个核心概念: 1. **远程接口(Remote Interface)**:这是定义远程方法的接口,它扩展了java.rmi.Remote接口。...

    rmi基础教程

    ### RMI基础教程:系统运行机理深度解析 #### RMI概述与应用场景 RMI(Remote Method Invocation)是Java平台提供的一种远程方法调用技术,它允许在不同JVM(Java虚拟机)上的对象互相通信,就如同本地调用一样...

    rmi基础知识学习

    总之,RMI是Java分布式计算的基础之一,虽然在现代开发中可能不如其他技术流行,但对于理解分布式系统原理和Java远程通信仍然具有重要的学习价值。通过深入学习和实践RMI,开发者可以更好地掌握分布式应用的设计和...

    rmi学习资料

    "RMI基础教程 - 深海有约 - BlogJava.files"和"rmi入门教程,简单明了(转).files"可能包含了相关的源代码或者图片资源,帮助读者更好地理解和实践RMI编程。 通过深入阅读这些资料,你可以了解如何设置RMI环境,...

    java_in_rmi.rar_Java RMI_RMI java_rmi _精通rmi

    1. RMI基础知识:解释RMI的概念,介绍其工作原理,包括客户端和服务端的角色。 2. 创建远程接口:讲解如何定义远程接口,它是远程方法调用的合同。 3. 实现远程对象:介绍如何实现远程接口,并创建远程对象实例,...

    rmi-lite 1.0

    1. Java RMI基础:理解RMI的基本概念,如远程接口、远程对象、注册表以及传输协议。 2. RMI Lite简化点:分析源代码,找出与标准RMI相比,rmi-lite做了哪些简化和优化。 3. Ant构建工具:熟悉Ant的配置文件结构,...

    rmi与spring整合实例

    1. RMI基础: - RMI的核心概念是远程对象,它是一个可以在不同JVM上执行的方法的代理。 - 远程接口定义了可以在远程对象上调用的方法,需要继承`java.rmi.Remote`接口。 - 实现远程接口的类是远程对象的具体实现...

    使用rmi进行远程调用

    5. **启动RMID服务**:确保服务器上运行着RMID守护进程,它是RMI基础设施的一部分。 6. **客户端调用**:在客户端,通过`Naming.lookup()`或`InitialContext`查找服务器上的`BankService`,然后就可以像调用本地...

    RMI.rar_rmi

    1. **RMI基础**: - **远程接口**:RMI的核心是远程接口,它定义了可以在远程对象上调用的方法。这些接口使用`java.rmi.Remote`作为父接口,并且声明抛出`java.rmi.RemoteException`。 - **远程对象**:实现远程...

    RMI远程调用代码及使用方法

    #### 二、RMI基础知识 在深入理解给定示例之前,我们首先简要介绍一些RMI的基础概念: 1. **接口**: 在RMI中,接口必须继承自`java.rmi.Remote`接口,并声明所有可能抛出`RemoteException`的方法。 2. **服务端实现*...

    RMI使用范例

    企业级JavaBeans(EJB)是在RMI基础上发展起来的,提供了更高级的服务,如事务管理、安全性、生命周期管理和资源池等。 **RMI的优化** 在实际应用中,可能需要优化RMI性能,如减少远程调用次数,使用批量调用,或者...

    RMI动态下载类分析及代码

    ### RMI基础 RMI 是Java平台上的一个标准API,用于创建分布式应用程序。它允许Java对象在不同的JVM之间进行交互,仿佛它们在同一台机器上运行。RMI的核心概念包括:远程接口、远程对象和远程方法调用。 ### 动态...

    rmi入门学习,实用的小例子

    ### RMI基础知识与实践 #### 一、Java RMI简介 Java Remote Method Invocation (RMI) 是Java平台提供的一种分布式计算技术,允许开发者在不同Java虚拟机(JVM)之间调用远程对象的方法,从而实现分布式应用程序的...

    java-rmi-server.rar_Java RMI_rmi _服务器

    一、RMI基础概念 1. 远程接口(Remote Interface):定义了远程对象需要暴露的方法,这些方法将在远程服务器上执行。 2. 远程实现(Remote Implementation):实现了远程接口的类,是实际执行远程方法的对象。 3. ...

    Spring-RMI.rar_spring rmi

    一、Spring整合RMI基础 1.1 RMI原理:RMI的核心在于Java的`java.rmi`包,它定义了接口和类来创建远程对象并进行调用。远程对象需继承`java.rmi.Remote`接口,并声明所有远程方法抛出`java.rmi.RemoteException`。 ...

    Java RMI的简单例子

    ### Java RMI基础知识与示例解析 #### 一、RMI简介 远程方法调用(Remote Method Invocation,简称RMI)是Java平台提供的一种用于实现分布式应用的技术。它允许对象在不同的JVM之间通过网络相互调用对方的方法,就...

    rmi设置

    - **RMIHelloWorld.rar**:这是一个RMI基础示例的压缩包,通常包含了一个简单的RMI客户端和服务器端的源代码,帮助初学者理解RMI的基本工作原理和交互流程。通过解压并运行这个例子,你可以看到RMI如何实现远程方法...

    RMI.rar_JAVA, 电话号码 查询 系统_Telephone RMI_rmi _电话号码查询系统

    1. **RMI基础概念**: - **远程对象**:在RMI中,远程对象是可以在网络上访问的对象,它们可以跨JVM边界调用方法。 - **接口定义**:定义远程对象需通过接口,该接口必须声明为`remote`,并包含`throws java.rmi....

    RMI+Zookeeper实现远程调用框架_Java_RMI java

    1. **RMI基础知识**:RMI是Java提供的一种标准API,用于在分布式环境中调用远程对象的方法。它包括三个主要步骤:定义远程接口、实现远程接口和服务端绑定远程对象到RMI注册表、客户端通过注册表查找并调用远程对象...

Global site tag (gtag.js) - Google Analytics