`
美丽的小岛
  • 浏览: 309447 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

RMI小例实战记录

阅读更多

一、关于RMI

对于远程,有些时候会想到FTP,HTTP,NFS,IMAP.POP等这些协议,但这些都是主机之间移动文件和数据的信号。另外还有一个是一台主机运行另一台主机的程序,例如Telnet等。而RMI(Remote Method Invocation)正是这个类型。

远程/本地对象区别:远程的对象驻留在不同的虚拟机中,向远程方法传参数和返回结果。

 

二、RMI机制

对于这种思想的实现机制有三个:

对于简单类型:按值传递

对于实现Remote接口的对象:以远程引用传递,允许接收方法调用远程对象上的方法,这与向本地JAVA方法传递本地引用的方法相似。

对于没有实现Remote接口的对象:按值传递(序列化)

 

三、RMI分层

服务器程序 ---------------------------- 客户端程序
骨架 ----------------------------
过程引用 ---------------------------- 过程引用
传输层 --------Internet--------- 传输层

 

这样的分层有点像网络的分层关系。

 

四、实例 

     1.服务器接口继承Remote

import java.rmi.* ;
import java.rmi.server.*;
public interface TestRMIServer extends Remote{
	public String getMessage(String str) throws RemoteException ;

}

      2.服务器继承UnicastRemoteObject并间接实现Remote(TestRMIServer接口)

import java.rmi.* ;
import java.rmi.server.* ;
public class TestRMIServerImpl extends UnicastRemoteObject implements TestRMIServer{

	public TestRMIServerImpl() throws RemoteException{
		super() ;
	}

	public String getMessage(String str) throws RemoteException {
		System.out.println(str) ;
		return "success" ;
	}

	public static void main(String arg[]){
		try{
			TestRMIServerImpl instance = new TestRMIServerImpl() ;
			Naming.rebind("test",instance) ;
			System.out.println("Server Registered") ;	
		}catch(Exception e){
			System.out.println(e) ;
		}
	}
}

     3.编写TestClient类为客户端

import java.io.*;
import java.rmi.*; 

public class TestClient{

       public TestClient(){
         try{
                     BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
                     String s=input.readLine();                 
                     TestRMIServer testServer=(TestRMIServer)Naming.lookup("rmi://127.0.0.1/test");                  
                     String str=testServer.getMessage(s);
                     System.out.print(str);
              }catch(Exception e){System.out.println(e);}
       }

       public static void main(String s[]){
              new TestClient();
       }
} 

     4.如下的步骤进行操作 

javac 对所有的类进行编译

rmic编译后会产生一个TestRMIServerImpl_Stub.class的文件(放在客户端的)

start rmiregistry看前的转载<转>网络编程RMI ,这个打开会有一个黑屏的。

policytool用的设置一些权限,具体如下

 由添加规则项目----》添加权限----》权权限,然后按下面这样选点确认与完成:


      
 
         

 

  5.测试

java TestRMIServerImpl运行服务器

如下图运行客户端

    

出现上面的东西,这个实验成功了。

  6.可能会出现的问题

     6.1当忘记开启注册表时,会出现下面的错误:

         
 
     6.2 当没有开启服务器时,会出现这样的错误:
       

 
 
好了,就这样了,如果用两个或更多机器去调用服务器的方法,在编译后的.class文体中,选三个复制(TestRMIServerImpl_Stub.class,TestRMIServer.class,TestClient.class)过去客户机器就可以了,否则,客户机会错的。

  • 大小: 4.1 KB
  • 大小: 8.2 KB
  • 大小: 9.3 KB
  • 大小: 8.3 KB
  • 大小: 3.9 KB
  • 大小: 2.5 KB
  • 大小: 4.1 KB
  • 大小: 5 KB
  • 大小: 7.7 KB
2
1
分享到:
评论

相关推荐

    Java RPC和RMI代码实战

    Java RPC和RMI代码实战,有关键注释,为最简案例。Maven搭建,JDK8编译。 RPC体验:依次运行RpcProvider和RpcConsumer类。 RMI体验:RMITest中依次运行testServer和testClient方法。

    SpringRMI小例子

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

    Spring RMI小例子

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

    RMI文档RMI小程序

    RMI(Remote Method Invocation)是Java中用于构建分布式应用程序的关键技术。它允许对象在不同的Java虚拟机(JVM)之间进行交互,仿佛它们都在同一台机器上。RMI是Enterprise JavaBeans(EJB)的基础,使得开发...

    java调用RMI小结

    RMI(Remote Method Invocation,远程方法调用)是Java平台中用于分布式计算的一种技术,它允许一个Java对象调用另一个在不同 JVM(Java虚拟机)上的对象的方法,从而实现跨网络的通信。Java RMI 提供了一种透明的...

    spring rmi 小例子

    在本示例中,我们将探讨如何使用Spring RMI创建一个小的应用程序,这通常涉及到服务器端(服务提供者)和客户端(服务消费者)的设置。 首先,让我们了解Spring RMI的核心概念: 1. **接口定义**:在RMI中,我们...

    Rmi示例 Rmi代码示例

    RMI(Remote Method Invocation,远程方法调用)是Java平台中的一个重要特性,它允许Java对象在不同的Java虚拟机之间进行通信,实现分布式计算。RMI是Java开发分布式应用程序的基础,尤其在构建分布式服务和微服务...

    RMI基础代码小程序

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

    java_rmi.rar_RMI java_java.rmi

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

    java rmi java rmi

    根据提供的文件信息,我们可以深入探讨Java RMI(Java Remote Method Invocation)的相关知识点,包括其概念、原理、体系结构以及一个具体的示例。 ### RMI的概念 RMI是一种Java技术,它允许开发者创建分布式应用...

    基于JAVA RMI的聊天室

    **基于JAVA RMI的聊天室** Java Remote Method Invocation(RMI)是Java平台提供的一种用于在分布式环境中调用远程对象的方法。在这个“基于JAVA RMI的聊天室”项目中,开发者利用RMI技术构建了一个简单的多用户...

    rmi服务端与客户端小程序

    本项目"rmi服务端与客户端小程序"提供了简单易懂的示例,帮助初学者快速理解和上手RMI。 1. **RMI基本概念** - **远程对象**:在远程JVM上运行的对象,可以通过RMI接口被本地对象调用。 - **接口**:定义了远程...

    简单的RMI程序

    【简单的RMI程序】是一个基于Java RMI(Remote Method Invocation,远程方法调用)技术的小型应用程序,用于实现会议管理功能。在这个项目中,学生或开发者可以学习如何使用RMI来创建分布式系统,使得不同计算机上的...

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

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

    java rmi 参考文档

    ### Java RMI (Remote Method Invocation) 概念与实践 #### 一、Java RMI简介 Java RMI(Remote Method Invocation)是一种允许调用不同Java虚拟机(JVM)上方法的机制。这些JVM可能位于不同的机器上,也可能在同一...

    Spring RMI

    Spring的面向切面编程(AOP)可以与RMI集成,提供日志记录、性能监控、安全控制等功能。通过定义切点和通知,可以在RMI调用前后执行特定逻辑。 ### 5. Spring RMI优化 - **RMI超时设置**:可以配置RMI连接和操作的...

    RMI例子

    这可能是用来管理日志记录的类或服务,可能与RMI服务端或客户端的日志记录功能有关。日志管理对于分布式系统来说至关重要,因为它可以帮助开发者追踪和调试系统中的问题。通常,日志管理器会提供记录、存储、检索和...

    web服务器 RMI meeting

    在文件"20093356谭进仕"中,可能会包含这次会议的详细记录、技术报告或者是一个案例研究,涵盖了上述话题的具体实现和经验分享。通过深入学习和理解这些内容,开发者可以更好地掌握Web服务器、RMI和Socket在实际项目...

Global site tag (gtag.js) - Google Analytics