`

Java 中RMI小应用

    博客分类:
  • Java
 
阅读更多

最近在学习序列化,看到远程调用也和序列化有关,于是顺便学学RMI,权当玩玩

1:所谓远程,并不需要分布在Internet上,或者在局域网中个,或者在同一台计算机的不同虚拟机之间,我们都可以称之为远程。EJB的实现也是以Java RMI为基础核心的。RMI远程方法调用,可以跨机器通过网络调用,不过Java RMI只支持两边都是Java程序,如果要实现完全两边异构,那么就要用到传说中的Web Service了。为了看好效果,都要建立两个或两个以上工程,当然,如果你有两个机器并通过局域网相连更好,如果能同有互联网的条件就更好了,以下是同一机器不同工程之间的小测试。

(1)首先建立一个服务端的工程,就叫RMIServerTest吧

(2)创建接口ServerInterface,继承Remote接口

 

package com.bona.rmi.server;

import java.rmi.Remote;
import java.rmi.RemoteException;  
  
/** 
* 定义远程接口,必须继承Remote接口, 
* 其中所有需要远程调用的方法都必须抛出RemoteException异常  
*/   
public interface HelloInterface extends Remote {   
    public String sayHello(String name) throws RemoteException;   
} 

 (3)创建接口的实现类 HelloInterfaceImpl,继承UnicastRemoteObject ,实现 HelloInterface 接口

 

 

package com.bona.rmi.server;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class HelloInterfaceImpl extends UnicastRemoteObject implements HelloInterface{  
  
    private static final long serialVersionUID = 1L;  
  
    public HelloImpl() throws RemoteException {  
        super();  
    }  
  
    @Override  
    public String sayHello(String name) throws RemoteException {  
        return "Hello, " + name;  
    }  
  
}  

 说明:接口的实现类同时要实现Serializable接口,这里继承UnicastRemoteObject也是间接实现Serializable接口,同时,因为构造方法需要抛出RemoteException,所以不能缺省使用隐含的无参构造方法,而应该自己显式定义构造方法。

 

(3)创建应用类,注册和启动服务端RMI,以被客户端调用

 

package com.bona.rmi.server;
import java.net.MalformedURLException;  
import java.rmi.AlreadyBoundException;  
import java.rmi.Naming;  
import java.rmi.RemoteException;  
import java.rmi.registry.LocateRegistry; 
public class HelloServer {  
    public static void main(String args[]) {  
        try {  
            //创建一个远程对象  
            HelloInterface rhello = new HelloInterfaceImpl();      
            //生成远程对象注册表Registry的实例,并指定端口为8888(默认端口是1099)  
            LocateRegistry.createRegistry(8888);  
  
            //把远程对象注册到RMI注册服务器上,并命名为RHello  
            //绑定的URL标准格式为:rmi://host:port/name(协议名可以省略,下面两种写法都可以)  
            Naming.bind("rmi://10.225.112.86:8888/HelloInterface", rhello);  
            //Naming.bind("//10.225.112.86:8888/HelloInterface",rhello);  
  
            System.out.println(">>INFO:远程HelloInterface对象绑定成功!");  
        } catch (RemoteException e) {  
            System.out.println("创建远程对象发生异常!");  
            e.printStackTrace();  
        } catch (AlreadyBoundException e) {  
            System.out.println("发生重复绑定对象异常!");  
            e.printStackTrace();  
        } catch (MalformedURLException e) {  
            System.out.println("发生URL畸形异常!");  
            e.printStackTrace();  
        }  
    }  
}  

运行HelloServer,看到

 

       >>INFO:远程HelloInterface对象绑定成功!

(4)新建一个新的工程,为了方便,也是Java Project,就叫RMIClientTest,

(5) 因为客户端需要有服务端那边提供的接口,才可以访问,所以要将服务端的HelloInterface接口完全拷贝(连同包)到客户端,当然为了方便,你在客户端工程中新建一个完全一样的接口也可以。实际运用中通常是要服务端接口打成jar包来提供的。

(6)创建客户端调用类

 

package com.bona.rmi.client;

import java.rmi.Naming;

import com.bona.rmi.server.HelloInterface;
public class HelloClient {  
    public static void main(String args[]) {  
        try {  
            // 在RMI服务注册表中查找名称为RHello的对象,并调用其上的方法  
            HelloInterface rhello = (HelloInterface) Naming.lookup("rmi://10.225.112.86:8888/HelloInterface");  
            System.out.println(rhello.sayHello("白哥"));  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
}  

 运行,显示成功

 

 

分享到:
评论

相关推荐

    java_rmi.rar_RMI java_java.rmi

    Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种分布式计算技术,它允许Java对象在不同的网络环境中进行交互,就像它们在同一个进程内一样。RMI是Java在分布式系统领域的核心特性,极大地...

    java调用RMI小结

    在Java RMI应用开发中,有几个关键点需要注意: 1. **远程服务接口定义**: - 接口是RMI的核心,它定义了可供远程调用的方法。这些接口需要继承`java.rmi.Remote`接口,并声明可能抛出`RemoteException`的异常。...

    Java RMI的应用.rar_Java RMI_Performance RMI_RMI java_rmi _成绩

    在这个“Java RMI的应用”项目中,我们看到一个用RMI实现的课程成绩管理系统。这个系统由几个关键组件组成,包括服务器端和客户端的接口、实现以及支持文件。 1. **RMI基本概念**:RMI的核心是远程对象,这些对象...

    RMI.rar_Java RMI_java.rmi_java.rmi.Remot_remote

    Java RMI(远程方法调用)是Java编程语言中的一项核心技术,自JDK 1.1版本起就被引入,用于构建分布式系统。RMI允许Java对象在不同的Java虚拟机(JVMs)之间进行交互,仿佛这些对象是在同一台机器上一样。这种技术的...

    Java中RMI的实现机制

    Java中RMI(Remote Method Invocation)的实现机制是Java分布式应用系统的核心解决方案之一。RMI使得Java对象之间可以进行远程方法调用,是Java实现分布式应用系统的关键技术之一。 RMI的实现机制可以分为三个步骤...

    java rmi java rmi

    根据提供的文件信息,我们...通过以上步骤,我们成功地实现了一个简单的RMI应用程序,其中包括了远程接口的定义、远程对象的实现、服务器端和客户端的代码实现。这个例子展示了如何利用RMI技术来构建分布式应用程序。

    java RMI实现代码

    2. 远程对象:实现了远程接口的类,代表实际执行远程方法的实体,需要继承`java.rmi.Remote`并实现接口中的所有方法。 3. RMIServer:服务器端程序,负责注册远程对象到RMI注册表,使得客户端可以通过名称查找并调用...

    java_rmi.zip

    Java RMI(Remote Method Invocation,远程方法调用)是Java平台提供的一种用于构建分布式应用程序的技术。它允许Java对象在不同的网络计算机之间进行交互,仿佛它们都在同一台机器上运行。这个压缩包“java_rmi.zip...

    rmi.rar_Java RMI_RMI java_RMI policy.all_rmi

    描述中提到的"java rmi例子"表明其中可能包含了一个或多个实际的RMI应用实例,这对于学习和理解RMI的工作原理非常有帮助。 首先,让我们详细了解Java RMI的核心概念和组件: 1. **远程接口(Remote Interface)**...

    JAVA远程调用RMI与应用

    JAVA远程调用RMI与应用 一、RMI(Remote Method Invocation)概念解析 RMI,即远程方法调用,是Java平台提供的分布式计算模型,它允许Java对象跨网络进行方法调用,如同本地调用一样。RMI的实现基于Java的面向对象...

    JAVA RMI

    1. **远程对象(Remote Object)**:这是RMI的核心,它是一个实现了特定接口(继承自java.rmi.Remote)的对象,该接口中的方法声明抛出java.rmi.RemoteException。远程对象可以驻留在网络上的任何地方,并通过网络...

    JAVA_RMI_实例.pdf

    在这个实例中,我们将详细探讨如何通过四个步骤来设置和使用一个简单的 Java RMI 应用。 1. 创建远程接口及声明远程方法 首先,我们需要定义一个远程接口 `HelloInterface`,它继承自 `java.rmi.Remote`。这个接口...

    java-rmi.zip_RMI java_rmi

    在实际应用中,RMI常用于构建服务器应用程序,如分布式数据库、分布式计算系统、网格计算等。通过RMI,开发者可以轻松地在不同的JVM之间交换数据,实现复杂的服务交互。 在"249866"这个文件名中,可能是指该压缩...

    RMI.zip_Java RMI_RMI java_rmi

    在创建RMI应用时,一般步骤包括: 1. 定义远程接口。 2. 创建远程接口的实现。 3. 在服务器端注册远程对象。 4. 在客户端查找并调用远程对象的方法。 5. 处理异常,特别是`RemoteException`。 在提供的文件列表中...

    JavaRMI快速入门

    6. **RMISecurityManager**:为了确保安全,RMI应用通常会使用`RMISecurityManager`,它提供了对远程调用的访问控制和权限管理。 7. **异常处理**:`RemoteException`是RMI中最常见的异常,它通常表示在调用远程...

    Java RMI中文规范

    Java RMI(Remote Method Invocation,远程方法调用)是Java平台中用于构建分布式对象系统的关键技术。它允许Java应用程序在不同Java虚拟机(JVM)之间进行远程方法调用,这些虚拟机可能位于同一台计算机或网络上的...

    java RMI技术实现的网络聊天室

    Java RMI(Remote Method Invocation)技术是Java平台中用于分布式计算的一种机制,它允许一个Java对象调用远程计算机上的另一个Java对象的方法。在本案例中,“java RMI技术实现的网络聊天室”是一个使用RMI构建的...

    JavaRMI超棒书

    10. **CORBA兼容性**:Java RMI还支持与公共对象请求代理架构(CORBA)的互操作,这使得Java RMI应用能够与其他CORBA应用进行交互。 #### 三、Java RMI的典型应用场景 1. **网络打印服务**:通过Java RMI,可以...

    Rmi.rar_Java RMI_RMI java_java RMI 线程_rmi

    Java RMI(Remote Method ...这些实例可能涵盖基本的RMI应用,以及更复杂的场景,例如处理并发请求、优化性能、处理安全性和异常等。实践中学习是掌握RMI的最佳途径,因此,这个压缩包将是一个宝贵的教育资源。

    java rmi上传文件

    在这次的项目中,对于客户端与服务器之间的通信,想了许多办法,由于做的是富客户端应用,最终将技术选定在了RMI和Java-sockets两种之间,其中RMI的灵活性不高,客户端和服务器端都必须是java编写,但使用比较方便,...

Global site tag (gtag.js) - Google Analytics