`
huxiaojun_198213
  • 浏览: 103510 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

RMI 开发步骤

    博客分类:
  • RMI
阅读更多
开发RMI步骤:
1.编写服务接口,此接口须直接或间接继承至Remote接口,且此服务接口中的所有方法必须声明抛出受查RemoteException异常.

package com.pa.rmi.test;

import java.rmi.Remote;

public interface BaseRemoteInterface extends Remote {

}


2.编写服务接口的实现类,继承UnicastRemoteObject,并实现服务接口.UnicastRemoteObject是一个用于构建RMI Server的便利基类,它可以处理大部分服务器创建的工作,如当调用其构造函数时,将自动创建Socket,并在给定的端口上监听客户端的请求.
package com.pa.rmi.test.upload;

import java.rmi.RemoteException;

import com.pa.rmi.test.BaseRemoteInterface;

public interface FileUploadHandler extends BaseRemoteInterface{

	public boolean upload(String src,String dest)throws FileUploadException,RemoteException;
}


3.使用rmic生成此实现类的stub(存根)和skeleton(骨架)
如何生成stub请参见本人的另一篇文章:JDK1.6 rmic命令使用

4.创建一个服务器,用于发布2中写好的类
package com.pa.rmi.test;

import java.net.MalformedURLException;
import java.rmi.AlreadyBoundException;
import java.rmi.Naming;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;

import com.pa.rmi.test.upload.FileUploadHandler;
import com.pa.rmi.test.upload.FileUploadHandlerImpl;

public class RMIRegistHelper {
	
	public static void regist(Remote remoteObject, String name,Integer port ) {
		try {
			if(port==null||port==0){
				port = 1099;
			}
			LocateRegistry.createRegistry(port);
			Naming.bind("rmi://localhost:"+port+"/" + name, remoteObject);
			System.out.println(name+" bound successful,listen on port :"+port);
		} catch (RemoteException e) {
		} catch (AlreadyBoundException e) {
		} catch (MalformedURLException e) {
		}
	}

	public static void main(String args[]) throws Exception {
         FileUploadHandler handler = new FileUploadHandlerImpl();
         regist(handler,"fileUploadHandler",null);
	}
}



5.创建一个客户程序进行RMI调用
 

package com.pa.rmi.test.upload;

import java.net.MalformedURLException;
import java.rmi.*;

public class ClientTest {

	public static void main(String args[]) {
		try {
			// 在RMI服务注册表中查找名称为fileUploadHandler的对象,并调用其上的方法
			FileUploadHandler fileUploadHandler = (FileUploadHandler) Naming.lookup("rmi://localhost:1099/fileUploadHandler");
			System.out.println(fileUploadHandler.upload("",""));
		} catch (NotBoundException e) {
			e.printStackTrace();
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (RemoteException e) {
			e.printStackTrace();
		} catch (FileUploadException e) {
			e.printStackTrace();
		}
	}

}


分享到:
评论
3 楼 shaoxuexue86 2012-08-24  
谢谢啊
2 楼 huxiaojun_198213 2012-08-04  
RMIRegistHelper只是负责注册远程对象,与客户端所处的位置并无关系。FileUploadHandler是远程接口,客户端要调用远程对象的方法,必须通过远程接口来操作(远程对象是没有向客户端暴露的),因此在客户端测试中,必须将远程接口放在客户端的classpath中。
1 楼 shaoxuexue86 2012-08-03  
请问客户端程序ClientTest 与 RMIRegistHelper 是在一个项目当中吗? 不然是怎么引入FileUploadHandler 的呢?如果是在不同的项目中是不是把FileUploadHandler 这个半制品类也要拷到另一个项目当中?我是这样做的不确定这样做是不是对的?谢谢

相关推荐

    关于java RMI分布式程序开发实例

    二、RMI开发步骤 1. 定义远程接口:创建一个接口,继承`Remote`,并声明远程方法。 2. 实现远程接口:创建实现该接口的类,包含具体业务逻辑。 3. 创建RMIServer:在服务器端启动RMI服务,创建远程对象实例,并在RMI...

    zookeeper+rmi开发

    结合"Zookeeper+rmi开发"的标题和描述,我们可以理解这是一个关于如何使用ZooKeeper进行服务注册与发现,并通过RMI实现远程调用的示例代码。在这样的场景下,ZooKeeper可能被用作服务注册中心,各服务节点通过...

    rmi与spring整合实例

    在IT行业中,远程方法调用(Remote Method Invocation,RMI)和Spring框架是两个非常重要的概念,它们在分布式系统开发中发挥着关键作用。RMI是Java平台提供的一种技术,用于在不同Java虚拟机(JVM)之间进行对象间...

    Java RMI 开发技术

    "Java RMI 开发技术"这份PDF文档应该会详细讲解RMI的基本概念、使用步骤、示例代码以及最佳实践,帮助读者深入理解并掌握Java RMI技术。 总的来说,Java RMI是Java分布式系统开发中的重要工具,它提供了一种简单、...

    RMI应用开发小例子源码.rar

    RMI应用开发的关键步骤包括: 1. **定义接口**:定义RMI服务的接口,其中包含所有需要远程调用的方法。 2. **实现接口**:在服务器端,创建一个实现接口的类,并实现所有方法。 3. **注册服务**:在服务器端,使用` ...

    分布式实验报告RMI.docx

    本实验报告主要介绍了 Java RMI(Remote Method Invocation,远程方法调用)的基本概念和实现步骤。RMI 是一种分布式对象通讯机制,允许运行在一个 Java 虚拟机的对象调用运行在另一个 Java 虚拟机上对象的方法。 ...

    C++ RMI代码

    C++ Remote Method Invocation (RMI) 是一种在分布式系统中实现对象间远程调用的技术,它允许一个程序在一台计算机上执行操作,而这些操作实际上是在另一台计算机上的对象上进行的。C++ 并非原生支持RMI,但通过第三...

    精通RMI程序代码

    - **RMI的步骤**:创建远程接口,实现远程对象,导出远程对象,将远程对象注册到注册表,最后从客户端通过注册表获取远程对象引用并调用方法。 - **安全性**:RMI的安全性涉及SSL/TLS加密、数字签名以及访问控制,...

    java_rmi文档

    RMI是Java网络编程的重要组成部分,使得开发分布式应用程序变得更加简单。本文档详细介绍了RMI的使用方法和工作机制,并配以丰富的实例进行讲解。 1. **RMI基本概念** - **远程对象**:在远程服务器上的对象,可以...

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

    RMI是Java在分布式计算领域的重要工具,它简化了网络应用的开发,使得开发者可以像操作本地对象一样操作远程对象。 首先,我们需要了解RMI的基本概念。RMI系统由两部分组成:服务器端(Server)和客户端(Client)...

    RMI 零基础入门与实例

    2. **RMI的步骤:** - **创建远程接口:**定义一个接口,声明所有的远程方法。 - **实现远程接口:**创建远程接口的实现类,并实现接口中的所有方法。 - **导出远程对象:**使用`java.rmi.Naming`或`java.rmi....

    Ehcache RMI Replicated Cluster(RMI集群)

    实现Ehcache RMI集群,需要以下步骤: 1. **配置Ehcache**:首先,你需要在每个节点上配置Ehcache,指定使用RMI replication策略。这通常涉及到在`ehcache.xml`配置文件中设置`replicationStrategy`为`rmi`,并提供...

    RMI

    Java开发工具包(JDK)自带了RMI的支持,包括编译、运行和调试工具。例如,`rmic`用于生成远程对象的stub和skeleton,`rmiregistry`用于启动RMI注册表,`rmid`管理服务器端的Java虚拟机。 **安全性与性能优化** ...

    Spring RMI

    在Spring中,配置RMI服务通常涉及以下步骤: - **创建远程接口**:定义一个继承自`java.rmi.Remote`的接口,声明远程方法。 - **实现远程接口**:提供接口的实现,这些方法将在服务器端执行。 - **配置RMI服务**:...

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

    Java Remote Method Invocation (RMI) 是Java平台提供的一种分布式计算技术,允许开发者在不同Java虚拟机(JVM)之间调用远程对象的方法,从而实现分布式应用程序的开发。RMI简化了网络编程的复杂性,并且与Java的面向...

    JAVA RMI

    RMI使得开发者可以像调用本地方法一样调用远程对象的方法,极大地简化了分布式系统的设计和开发。 ### RMI基本概念 1. **远程对象(Remote Object)**:这是RMI的核心,它是一个实现了特定接口(继承自java.rmi....

    RMI原理及实现

    Java自带了一些用于RMI开发的工具: - `rmiregistry`:RMI注册表服务,用于存储和查找远程对象。 - `rmic`:编译远程接口,生成必要的Stub和Skeleton类。 - `rmid`:RMI运行时守护进程,管理远程对象的激活和持久化...

    Java中RMI的实现机制

    RMI的实现机制是Java分布式应用系统的核心解决方案之一,对于Java分布式应用系统的开发具有重要的意义。 RMI的实现机制是Java分布式应用系统的核心解决方案之一,RMI使得Java对象之间可以进行远程方法调用,实现...

    JAVA RMI简单例子

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

Global site tag (gtag.js) - Google Analytics