`

RMI小例子

阅读更多

1.创建远程接口及声明远程方法(HelloInterface.java)

package com.unmi;
import java.rmi.*; 
/**   
 * 远程接口必须扩展接口java.rmi.Remote   
 */   
public interface HelloInterface extends Remote    
{    
   /**   
    * 远程接口方法必须抛出 java.rmi.RemoteException   
    */   
   public String say() throws RemoteException;    
}

 

 

2.实现远程接口及远程方法(继承UnicastRemoteObject)Hello.java

package com.unmi;    
   
import java.rmi.*;    
import java.rmi.server.*;    
   
/**   
 * 扩展了UnicastRemoteObject类,并实现远程接口 HelloInterface   
 */   
public class Hello extends UnicastRemoteObject implements HelloInterface    
{    
   private String message;    
   
   /**   
    * 必须定义构造方法,即使是默认构造方法,也必须把它明确地写出来,因为它必须抛出出RemoteException异常   
    */   
   public Hello(String msg) throws RemoteException    
   {    
      message = msg;    
   }    
   
   /**   
    * 远程接口方法的实现   
    */   
   public String say() throws RemoteException    
   {    
      System.out.println("Called by HelloClient");    
      return message;    
   }    
}    

 

 

3. 启动RMI注册服务,并注册远程对象(HelloServer.java)

package com.unmi;    
   
import java.rmi.Naming;    
import java.rmi.registry.LocateRegistry;    
   
public class HelloServer    
{    
   /**   
    * 启动 RMI 注册服务并进行对象注册   
    */   
   public static void main(String[] argv)    
   {    
      try   
      {    
         //启动RMI注册服务,指定端口为1099 (1099为默认端口)    
         //也可以通过命令 $java_home/bin/rmiregistry 1099启动    
         //这里用这种方式避免了再打开一个DOS窗口    
         //而且用命令rmiregistry启动注册服务还必须事先用RMIC生成一个stub类为它所用    
         LocateRegistry.createRegistry(1099);    
            
         //创建远程对象的一个或多个实例,下面是hello对象    
         //可以用不同名字注册不同的实例    
         HelloInterface hello = new Hello("Hello, world!");    
            
         //把hello注册到RMI注册服务器上,命名为Hello    
         Naming.rebind("Hello", hello);    
             
         //如果要把hello实例注册到另一台启动了RMI注册服务的机器上    
         //Naming.rebind("//192.168.1.105:1099/Hello",hello);    
            
         System.out.println("Hello Server is ready.");    
      }    
      catch (Exception e)    
      {    
         System.out.println("Hello Server failed: " + e);    
      }    
   }    
}

 

 


4. 客户端查找远程对象,并调用远程方法(HelloClient)

package com.unmi;    
   
import java.rmi.Naming;    
   
public class HelloClient    
{    
   /**   
    * 查找远程对象并调用远程方法   
    */   
   public static void main(String[] argv)    
   {    
      try   
      {    
         HelloInterface hello = (HelloInterface) Naming.lookup("Hello");    
             
         //如果要从另一台启动了RMI注册服务的机器上查找hello实例    
         //HelloInterface hello = (HelloInterface)Naming.lookup("//192.168.1.105:1099/Hello");    
             
         //调用远程方法    
         System.out.println(hello.say());    
      }    
      catch (Exception e)    
      {    
         System.out.println("HelloClient exception: " + e);    
      }    
   }    
}

 

 

5. 执行程序:启动服务HelloServer;运行客户端HelloClient进行调用

(1)打开一个Dos窗口执行命令 java com.unmi.HelloServer 启动服务HelloServer

E:workspaceTestRMIbin>java com.unmi.HelloServer
Hello Server is ready.

运行成功则可以看到 Hello Server is ready

(2)打开另一个Dos窗口执行命令 java com.unmi.HelloClient 运行客户端程序

E:workspaceTestRMIbin>java com.unmi.HelloClient
Hello, world!

调用成功则可以看到 Hello, world!

并且在启动服务端的窗口中看到紧跟 Hello Server is ready. 打印出
Called by HelloClient

0
0
分享到:
评论

相关推荐

    Spring RMI小例子

    在这个"Spring RMI小例子"中,我们将深入理解Spring如何简化RMI的使用,以及如何通过它实现跨网络的交互。 首先,RMI允许Java对象在不同的JVM之间进行通信,仿佛它们都在同一个进程中运行。Spring通过提供自动注册...

    SpringRMI小例子

    在这个"SpringRMI小例子"中,我们将深入探讨如何利用Spring框架来增强RMI的功能,使其更加灵活和易于管理。 首先,我们需要理解Spring框架在RMI中的角色。Spring提供了对RMI的高级抽象,通过其`org.springframework...

    spring rmi 小例子

    Spring Remote Method Invocation (RMI) 是Java平台上的一个远程对象调用框架,它允许你在分布式环境中调用对象...通过理解并实践这个小例子,你将能够更好地掌握Spring RMI的用法,为构建更复杂的分布式系统打下基础。

    spring整合RMI小例子

    在本篇中,我们将深入探讨如何将Spring框架与Remote Method Invocation (RMI)技术整合,以便在分布式环境中实现远程服务调用。RMI是Java提供的一种机制,它允许对象在不同的JVM之间进行通信,而Spring框架则为构建可...

    JAVA RMI简单例子

    这个"JAVA RMI简单例子"旨在帮助我们深入理解RMI的基本原理和实现步骤。 RMI的核心概念包括远程接口、远程对象和RMIC编译器。首先,我们需要定义一个远程接口,该接口声明了可以在远程服务器上执行的方法。这些方法...

    spring RMI简单例子

    在这个简单的例子中,我们将深入理解Spring RMI的工作原理以及如何实现一个基本的Spring RMI应用。 首先,让我们了解RMI的基本概念。RMI允许Java对象在不同的JVM之间进行通信,仿佛它们都在同一台机器上。它通过...

    rmi简单例子

    根据提供的文件信息,本文将详细解释RMI(远程方法调用)的概念、工作原理以及一个简单的RMI示例。RMI是一种Java技术,允许在不同的Java虚拟机(JVM)之间进行远程过程调用。 ### RMI简介 RMI是Java平台提供的一种...

    RMI例子

    这个"RMI例子"很可能是为了演示如何在Java应用中利用RMI进行跨JVM的交互。 在RMI中,一个JVM上的对象被称为服务端,它可以提供一些远程方法供其他JVM上的客户端调用。服务端需要将远程对象注册到RMI注册表中,这样...

    java RMI简单例子

    以下是对"java RMI简单例子"的详细解释: 1. **RMI的基本概念**: - **远程对象**:在RMI中,一个对象如果可以在不同的JVM上执行其方法,那么就被称为远程对象。 - **远程接口**:定义远程对象需要实现的接口,...

    一个完整的Java RMI通讯的例子

    在这个例子中,我们将深入理解RMI的基本概念、工作原理以及如何创建一个完整的RMI通信系统。 首先,我们要知道RMI的核心思想是将对象的接口和其实现分开,接口在客户端,实现则在服务器端。当客户端调用接口方法时...

    java RMI入门例子

    这个"java RMI入门例子"将带你深入理解RMI的工作原理和主要组件。 RMI的核心概念包括: 1. **远程接口**:这是定义远程方法的接口,通常继承自java.rmi.Remote。这些方法声明抛出java.rmi.RemoteException,表示...

    Java RMI的简单例子

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

    RMI入门好例子

    这个“RMI入门好例子”旨在帮助初学者理解并实践RMI的基本原理和操作流程。 首先,RMI的核心思想是通过接口实现远程对象的透明调用。在示例中,`rmidemo`可能包含了服务器端的代码,它会定义一个接口,例如`...

    java RMI 例子

    通过学习和实践这个RMI例子,我们可以深入理解Java的分布式编程能力,这对于开发大型企业级应用或者分布式系统来说是非常有价值的。同时,了解RMI的工作原理也有助于我们更好地掌握其他类似技术,如JDBC、JNDI等。

    RMI的例子和做作录象

    在这个"RMI的例子和做作录象"中,我们似乎有一个具体的RMI应用示例,即一个聊天室系统。这个系统展示了RMI如何被用来创建一个多用户交互的应用。 RMI的基本工作原理是:一个Java对象(服务器端)导出一个或多个远程...

    较为复杂的rmi的例子.rar_rmi

    RMI(Remote Method ...通过这个复杂的RMI例子,你可以深入理解远程方法调用的概念,以及如何在Java中实现分布式应用程序。同时,它也是一个很好的学习和实践平台,帮助开发者熟悉网络编程、异常处理和多层架构设计。

    rmi简单例子,可以学习一下

    一个简单的RMI例子可能会包括一个`Product`类,它实现了远程接口,例如`IProductService`,提供产品相关的操作,如查询、添加或更新产品信息。服务器端会创建`Product`的实例,并将其导出和注册到RMI注册表。客户端...

    rmi实现例子

    java远程调用rmi 实现小例子,将imp.zip包放到myeclipse工程里,即可运行客户端以及服务端

    RMI入门例子和教程,分初级、进阶,还有与Spring整合的

    自己收集了一些跑得通的教程,并自己整理给出了,入门例子。包括:最原生的使用javac和rmic的例子;还有进一步的,使用IDM,用代码代理原生rmic...还有RMI和Spring整合的例子。 另外附有:例子说明 和 一些简单的教程。

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

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

Global site tag (gtag.js) - Google Analytics