`

RMI程序设计

阅读更多
具体内容
3.1、分布式开发的基本概念
RMI可以从一台机器(在java中每一个JVM进程都表示一台机器),调用另一台机器上的程序,称为远程方法调用。
如果要想实现RMI,必须有一个远程方法的视图,此视图可以直接通过接口表示,但是此接口现在是属于远程接口。
服务器专门提供远程方法的具体实现,而客户端根据接口的定义从服务器端取得一个接口的实例,调用远程服务器上的方法。
所有服务器上提供的远程对象必须被RMI所注册,只有注册之后的对象才能被远程客户端所访问。
客户端通过名称找到服务器端上的远程对象,服务器端为每一个远程对象进行命名。
RMI程序中必须存在存根与骨架:
  • 存根放在客户端
  • 骨架放在服务器端
  • 客户端通过存根找到服务器端的骨架,之后才可以完成RMI程序
  • 在JDK 1.5之后程序不用再重新生成骨架了(此骨架程序将无法看见)
3.2、RMI程序开发
RMI程序中必须定义远程接口,必须编写远程接口实现类,必须有服务器,并且在服务器上注册远程对象。
3.2.1、定义远程接口
一个接口只要继承了java.rmi.Remote接口,此接口就称为远程接口。
在远程接口中的全部方法都将成为远程方法,远程方法必须抛出远程异常。
Hello.java:
package org.lxh.dao ;
import java.rmi.* ;
public interface Hello extends Remote{
public String sayHello(String name) throws RemoteException ;
}
3.2.2、定义远程接口实现类
远程接口的实现类除了要实现远程接口之外,还需要继承RemoteServer类,同时在构造方法中绑定此对象。
package org.lxh.dao.impl ;
import java.rmi.* ;
import java.rmi.server.* ;
import org.lxh.dao.* ;
public class HelloImpl extends RemoteServer implements Hello{
public HelloImpl() throws Exception{
  UnicastRemoteObject.exportObject(this,1234) ;
}
public String sayHello(String name) throws RemoteException {
  return "你好," + name ;
}
}
3.2.3、定义服务器端
服务器端的主要功能是绑定一个远程对象,通过名称服务绑定。
package org.lxh.server;
import java.rmi.* ;
import org.lxh.dao.* ;
import org.lxh.dao.impl.* ;
public class Server{
public static void main(String args[]){
  try{
   Hello he = new HelloImpl() ;
   Naming.rebind("hello",he) ; // 绑定对象
  }catch(Exception e){}
}
};
3.2.4、定义客户端
客户端主要就是查找远程对象,通过名称服务查找。
package org.lxh.client ;
import java.rmi.* ;
import org.lxh.dao.* ;
public class Client{
public static void main(String args[]){
  Hello hello = null ;
  try{
   hello = (Hello)Naming.lookup("rmi://localhost/hello") ;
   System.out.println(hello.sayHello("zhangsan")) ;
  }catch(Exception e){}
}
};
3.2.5、RMI运行
RMI程序的运行有一系列的要求,因为最终必须有存根才可以让程序正常执行,而且还需要在RMI注册上绑定好对象。
1、 编译所有的程序:javac -d . *.java
2、 产生存根,在java的JDK中存在一个rmic的命令。可以根据远程接口的实现类生成存根:
  rmic -d . org.lxh.dao.impl.HelloImpl
3、 启动RMI注册工具:rmiregistry
4、 打开新窗口,运行服务器端:java org.lxh.server.Server
5、 运行客户端:java org.lxh.client.Client
3.3、在web中访问RMI Server
从之前的程序可以发现,如果要想访问RMI服务器端,则必须有存根与远程接口,那么对于WEB端访问RMI端也是一样的,也必须存在存根及远程接口。
hello.jsp:
<%@page import="java.rmi.*"%>
<%@page import="org.lxh.dao.*"%>
<%
Hello hello = null ;
try{
  hello = (Hello)Naming.lookup("rmi://localhost/hello") ;
}catch(Exception e){}
%>
<h1><%=hello.sayHello("zhangsan")%></h1>
现在的程序结构:
Client  WEB  RMI
• 对于客户端来说:WEB是服务器端
• 在服务器端来说:RMI又是服务器端,而WEB是客户端
• 服务器端和客户端的概念是相对而言的
4、总结
分布式开发中,最重要的就是接口,接口定义客户端与服务器端之间的访问标准。
分享到:
评论

相关推荐

    分布式程序设计——RMI简单示例

    分布式程序设计是现代软件开发中的一个重要领域,它允许在多台计算机之间共享资源和执行任务,从而提高了系统的可扩展性和性能。RMI(Remote Method Invocation)是Java平台上的一个核心特性,用于实现分布式计算,...

    使用RMI和CORBA进行分布式java程序设计

    【分布式Java程序设计:RMI与CORBA】 分布式程序设计是一种技术,允许不同计算机上的程序协同工作,仿佛它们都在同一台机器上运行。在Java世界中,RMI(Remote Method Invocation,远程方法调用)和CORBA(Common ...

    RMI网络编程开发之二 如何搭建基于JDK1.5的分布式JAVA RMI 程序

    本篇将深入探讨如何利用JDK 1.5版本搭建一个基本的分布式Java RMI程序。RMI是Java在分布式计算领域的重要工具,它简化了网络应用的开发,使得开发者可以像操作本地对象一样操作远程对象。 首先,我们需要了解RMI的...

    rmi服务端与客户端小程序

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

    java rmi 参考文档

    - RMI则是专为Java设计,用于在JVM之间通信。 - CORBA包含更多机制,如服务器应用程序启动、管理持久状态、支持事务等。 - Java RMI没有Object Broker。 - **与Sun RPC和DCERPC的区别**: - RMI不是语言/机器...

    RMI

    **远程方法调用(Remote Method Invocation...总的来说,RMI是Java实现分布式系统的重要工具,它提供了简单、直观的方式来构建跨越多台机器的应用程序。了解其工作原理和最佳实践对于任何Java开发者来说都是有价值的。

    rmi_java项目实例

    本项目实例是基于RMI技术实现的一个服务器端程序,名为"RMIServer",提供了远程服务的接口和实现,下面将详细介绍RMI的基本概念、工作原理以及如何通过这个项目实例来学习和应用RMI。 1. **RMI基本概念**: - **...

    java 简单RMI 会议功能实现

    此外,为了运行RMI程序,还需要配置Java的RMI运行环境,包括设置JVM的`-Djava.rmi.server.hostname`属性,确保服务器和客户端的RMI通信通道畅通。在实际开发中,可能还需要考虑异常处理、安全性、并发控制等高级话题...

    Ehcache RMI Replicated Cluster(RMI集群)

    在大型分布式系统中,缓存是提高应用程序性能的关键组件,因为它可以减少对数据库的直接访问,从而降低延迟并减轻后端系统的压力。 Ehcache 是一个开源的 Java 缓存库,提供了内存和磁盘存储、多线程支持以及丰富的...

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

    3. **聊天室服务器**:`chatserver`可能是这个项目的服务器端程序,它包含RMI服务器的实现,包括创建远程对象,注册到RMI注册表,并处理来自客户端的请求,如接收消息、广播消息等。 4. **聊天室客户端**:`...

    RMI商品管理系统.zip

    《基于RMI的Java商品管理系统...它展示了如何通过RMI实现分布式应用,如何设计远程接口和实现,以及如何在无数据库的情况下处理数据。对于想要深入理解Java RMI以及分布式系统开发的开发者,这是一个宝贵的实践案例。

    java-RMI技术讲解

    - **提供分布式服务**:RMI使得创建跨网络的服务变得容易,开发者可以通过简单的接口设计来实现复杂的服务交互。 - **集成到J2EE框架中**:RMI常常被封装在各种J2EE项目框架中,例如Spring和EJB等,以提高系统间的...

    RMI教程-入门经典

    Java RMI(Remote Method Invocation,远程...在实际开发中,还应关注RMI的最佳实践,例如合理设计远程接口,避免过度的网络通信,以及利用缓存等策略提高性能。通过不断学习和实践,开发者可以充分利用RMI的强大功能。

    RMI-IIOP 基于SUN

    2. 示例程序:展示了RMI-IIOP的实际应用,包括客户端和服务端的代码示例,帮助初学者理解工作流程。 3. 集成文档:可能包含了如何将RMI与Spring框架整合的教程,指导开发者如何在Spring环境中使用RMI-IIOP实现服务的...

    东北大学程序实践三(多线程、服务器、RMI)

    【多线程】是现代计算机程序设计中的一个重要概念,它允许一个应用程序同时执行多个任务。在Java等支持多线程的编程语言中,可以创建并管理多个线程,以提高程序的并发性和效率。多线程有助于充分利用多核处理器的...

    RMI 零基础入门与实例

    在Java中,RMI允许一个Java对象在一台机器上调用另一台机器上的对象的方法,使得开发者能够构建跨越多台计算机的分布式应用程序。RMI是Java企业级应用开发中的重要组成部分,尤其在构建分布式服务、服务器端组件交互...

    Java RMI demo多对象

    Java Remote Method Invocation(RMI)是Java平台上的一个特性,它允许在分布式环境中进行对象间的交互,即在一台机器上的对象可以...通过学习和实践,开发者可以有效地利用RMI的优势来设计和实现复杂的分布式系统。

    分布式程序java 实验名称 基于Java RMI的C/S编程实验

    分布式程序设计是现代软件开发中的一个重要领域,尤其是在大型企业级应用和互联网服务中。Java作为一种跨平台、面向对象的语言,提供了强大的工具和技术来支持分布式计算。在这个基于Java的C/S(客户端/服务器)编程...

    编写简单的HTTP 1.0客户端/服务器程序:.编写多线程Web服务器:编写简单的RMI程序

    本实验旨在通过编写简单的HTTP 1.0客户端/服务器程序、多线程Web服务器以及RMI程序,帮助你深入理解这些关键技术。 首先,我们来看HTTP 1.0客户端/服务器程序。HTTP是超文本传输协议,它是互联网上应用最为广泛的一...

Global site tag (gtag.js) - Google Analytics