- 浏览: 394668 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
surpassno:
南冠楚囚 写道如果是复制一个一位数组,那么改变复制后的数组并不 ...
java的system.arraycopy()方法 -
南冠楚囚:
如果是复制一个一位数组,那么改变复制后的数组并不影响原数组。你 ...
java的system.arraycopy()方法 -
wxq5513866:
有密码,大家不要下载了,下载也解压不了,别上当了
android中调用webservice -
wxq5513866:
happyhan 写道还要密码啊 能否告知密码
android中调用webservice -
happyhan:
还要密码啊 能否告知密码
android中调用webservice
Java RMI (Remote Method Invocation)
Java RMI是一种机制, 是能够让一个 java虚拟机 调用 另一个java 虚拟机上对象的方法, 从而实现远程访问.
但是通过客户端实现该远程访问 必须绑定一个远程接口对象.
RMI可以称作不同jvm间的访问协议。
定义远程接口
首先 我们写个远程接口 HelloInterface 该接口继承了远程对象Remote
接口HelloInterface 里面有个sayHello的方法 用于客户端连接后 打招呼
由于sayHello方法 继承了远程Remote对象 所以需要抛一个 RemoteException 远程异常。
实现接口(实现接口在服务端)
接下来 我们实现下 该接口里的方法 实现接口的方法在服务端
通过 HelloInterfaceImpl类 实现了接口HelloInterface里的方法
注意: 这里HelloInterfaceImpl 同样继承了 UnicastRemoteObject 远程对象 这个必须写 虽然不写 代码智能提示不会提示有错 但服务器启动后会报错,但通过实现serialize接口可以解决启动问题,但是客户端conncetion refused 无法解决。并如需要对象则对象须实现serializate借口,完成对象传输
由于 UnicastRemoteObject 远程对象 需要抛出一个RemoteException 异常 所以 这里用了一个构造方法 HelloInterfaceImpl() 来抛这个异常。
编写服务端
接下来 我们来写 服务端 由于RMI 实现远程访问的机制是指 客户端通过在RMI注册表上寻找远程接口对象的地址(服务端地址) 达到实现远程访问的目的
所以这里 我们需要在 服务端 创建一个远程对象的注册表 用于绑定和注册 服务器端地址和远程接口对象 便于后期客户端能够成功找到服务端 (详细请看代码注释)
编写客户端
服务器写完了 我们来写下访问服务器需要的客户端
客户端上同样 需要定义一个 远程访问的地址 - 即服务器地址
然后 通过在RMI注册表上寻找 该地址; 如果找到 则建立连接。
Java RMI是一种机制, 是能够让一个 java虚拟机 调用 另一个java 虚拟机上对象的方法, 从而实现远程访问.
但是通过客户端实现该远程访问 必须绑定一个远程接口对象.
RMI可以称作不同jvm间的访问协议。
定义远程接口
首先 我们写个远程接口 HelloInterface 该接口继承了远程对象Remote
接口HelloInterface 里面有个sayHello的方法 用于客户端连接后 打招呼
由于sayHello方法 继承了远程Remote对象 所以需要抛一个 RemoteException 远程异常。
package Remote_Interface; import java.rmi.Remote; import java.rmi.RemoteException; /** * 接口HelloInterface 继承了 远程接口 Remote 用于客户端Client远程调用 */ public interface HelloInterface extends Remote{ public String sayHello(String name) throws RemoteException; }
实现接口(实现接口在服务端)
接下来 我们实现下 该接口里的方法 实现接口的方法在服务端
通过 HelloInterfaceImpl类 实现了接口HelloInterface里的方法
注意: 这里HelloInterfaceImpl 同样继承了 UnicastRemoteObject 远程对象 这个必须写 虽然不写 代码智能提示不会提示有错 但服务器启动后会报错,但通过实现serialize接口可以解决启动问题,但是客户端conncetion refused 无法解决。并如需要对象则对象须实现serializate借口,完成对象传输
由于 UnicastRemoteObject 远程对象 需要抛出一个RemoteException 异常 所以 这里用了一个构造方法 HelloInterfaceImpl() 来抛这个异常。
package Server; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; import Remote_Interface.HelloInterface; /** * HelloInterfaceImpl 用于实现 接口HelloInterface 的远程 SayHello方法 */ @SuppressWarnings("serial") // 继承 UnicastRemoteObject 远程对象 这个一定要写 否则 服务器启动报异常 public class HelloInterfaceImpl extends UnicastRemoteObject implements HelloInterface{ //HelloInterfaceImpl的构造方法 用于抛出UnicastRemoteObject 远程对象里的异常 protected HelloInterfaceImpl() throws RemoteException { } public String sayHello(String name) throws RemoteException { //该信息 在客户端上发出 String strHello = "你好! " + name+" 欢迎访问服务器!"; //这条信息 是在服务器上 打印出来 System.out.println(name +" 正在 访问本服务器!"); return strHello; } }
编写服务端
接下来 我们来写 服务端 由于RMI 实现远程访问的机制是指 客户端通过在RMI注册表上寻找远程接口对象的地址(服务端地址) 达到实现远程访问的目的
所以这里 我们需要在 服务端 创建一个远程对象的注册表 用于绑定和注册 服务器端地址和远程接口对象 便于后期客户端能够成功找到服务端 (详细请看代码注释)
package Server; import java.net.MalformedURLException; import java.rmi.AlreadyBoundException; import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import Remote_Interface.HelloInterface; /** * Server 类 用于 启动 注册服务器 */ public class Server { public static void main(String[] args) { try { // 定义远程接口HelloInterface 对象 用于绑定在服务器注册表上 该接口由HelloInterfaceImpl()类实现 HelloInterface hInterface = new HelloInterfaceImpl(); int port = 6666; // 定义一个端口号 // 创建一个接受对特定端口调用的远程对象注册表 注册表上需要接口一个指定的端口号 LocateRegistry.createRegistry(port); // 定义 服务器远程地址 URL格式 String address = "rmi://localhost:" + port + "/hello"; // 绑定远程地址和接口对象 Naming.bind(address,hInterface); // 如果启动成功 则弹出如下信息 System.out.println(">>>服务器启动成功"); System.out.println(">>>请启动客户端进行连接访问"); } catch (MalformedURLException e) { System.out.println("地址出现错误!"); e.printStackTrace(); } catch (AlreadyBoundException e) { System.out.println("重复绑定了同一个远程对象!"); e.printStackTrace(); } catch (RemoteException e) { System.out.println("创建远程对象出现错误!"); e.printStackTrace(); } } }
编写客户端
服务器写完了 我们来写下访问服务器需要的客户端
客户端上同样 需要定义一个 远程访问的地址 - 即服务器地址
然后 通过在RMI注册表上寻找 该地址; 如果找到 则建立连接。
package Client; import java.net.MalformedURLException; import java.rmi.Naming; import java.rmi.NotBoundException; import java.rmi.RemoteException; import Remote_Interface.HelloInterface; /** * Client 用于连接 并访问 服务器Server */ public class Client { public static void main(String[] args) { // 定义一个端口号 该端口号必须与服务器的端口号相同 int port = 6666; // 同样定义一个远程地址 该地址为服务器的远程地址 所以 与服务器的地址是一样的 String address = "rmi://localhost:" + port + "/hello"; // 在RMI注册表上需找 对象为HelloInterface的地址 即服务器地址 try { HelloInterface hInterface = (HelloInterface) Naming.lookup(address); // 一旦客户端找到该服务器地址 则 进行连接 System.out.println("<<<客户端访问成功!"); //客户端 Client 调用 远程接口里的 sayHello 方法 并打印出来 System.out.println(hInterface.sayHello("SoFlash")); } catch (MalformedURLException e) { System.out.println("错误的地址!"); e.printStackTrace(); } catch (RemoteException e) { System.out.println("创建远程对象出错!"); e.printStackTrace(); } catch (NotBoundException e) { System.out.println("未绑定的远程对象!"); e.printStackTrace(); } } }
发表评论
-
jmx介绍
2012-05-18 15:21 1324"JMX(Java Management Exten ... -
java多线程文件下载
2012-03-08 20:03 24691、DownloadManager类 import java. ... -
java异常处理
2011-11-30 15:27 986public class test { /** ... -
快排和插入排序
2011-10-20 17:08 1147public class CombineQuickSortIn ... -
java NIO
2011-10-09 19:22 1450一、NIO的出现 NIO是JDK1.4里面才出 ... -
java 远程通信协议
2011-10-09 16:55 1584Java 远程通讯可选技术及原理 在分布式服务框架中,一个最基 ... -
system.exit
2011-09-29 17:00 1020System.exit()用来结束当前运行的java虚拟机,参 ... -
java 文件读取方法
2011-09-27 14:50 12351、按字节读取文件内容 2、按字符读取文件内容 3、按行读取文 ... -
timestamp时间戳
2011-09-05 09:51 1229timestamp是一种时间类型 精度很高,比datetim ... -
java 动态代理类的实现,原理及应用
2011-09-03 11:02 2199在目前的Java开发包中包含了对动态代理的支持,但是其实现只支 ... -
java annotation 介绍
2011-09-02 11:03 955元数据的作用 如果要 ... -
java 反射
2011-08-20 11:27 798JAVA语言中的反射机制: 在Java 运行时 环境中 ... -
junit使用
2011-08-05 16:41 1167测试分类:白箱测试、黑箱测试、单元测试、集成测试、功能测试.. ... -
ThreadLocal 知识
2011-08-05 13:58 857ThreadLocal是什么 早在JD ... -
httpclient 介绍
2011-07-28 09:33 10611.HttpClient简介 HttpCl ... -
java解析xml的四种方法
2011-07-13 22:52 14641. DOM(Document Object Model) ... -
xml字符串转化为规则格式的xml字符串
2011-07-13 18:53 1394import java.io.ByteAr ... -
java中的参数传递
2011-07-13 10:48 985面试题:当一个对象被当 ... -
StringUtils的实用方法
2011-07-13 10:16 1701tringUtils 方法的操作对象是 java.lang. ... -
java dom解析xml
2011-07-08 16:56 1265一、前言 用Java解析XML文档,最常用的有两种方 ...
相关推荐
下面将详细介绍Java RMI的基本概念、工作原理以及如何编写一个简单的RMI示例。 ### RMI基本概念 1. **远程对象(Remote Object)**:在RMI中,远程对象是实现了特定接口的Java对象,这个接口被称为远程接口...
**RMI介绍** RMI是Java中用于在不同JVM之间调用方法的机制。它允许对象在不同的网络节点上分布,提供了一种透明的方式来调用远程对象的方法,仿佛它们就在本地一样。RMI的核心概念包括:远程接口、远程对象、注册表...
### Java RMI 详细介绍 #### 一、Java RMI 概念 Java远程方法调用(Java Remote Method Invocation,简称 Java RMI)是一种允许在一台机器上的Java对象通过网络调用另一台机器上的对象的方法的技术。它为Java开发...
**RMI接口技术详解** RMI(Remote Method Invocation),即远程方法调用,是Java平台中用于实现不同Java虚拟机间对象通信的技术。RMI的目标是使得分布在网络上的对象能够像本地对象一样工作,实现位置透明性,隐藏...
本实验报告主要介绍了 Java RMI(Remote Method Invocation,远程方法调用)的基本概念和实现步骤。RMI 是一种分布式对象通讯机制,允许运行在一个 Java 虚拟机的对象调用运行在另一个 Java 虚拟机上对象的方法。 ...
本文档详细介绍了RMI的使用方法和工作机制,并配以丰富的实例进行讲解。 1. **RMI基本概念** - **远程对象**:在远程服务器上的对象,可以通过网络调用其方法。 - **接口**:定义远程对象需要实现的公共方法,...
本项目实例是基于RMI技术实现的一个服务器端程序,名为"RMIServer",提供了远程服务的接口和实现,下面将详细介绍RMI的基本概念、工作原理以及如何通过这个项目实例来学习和应用RMI。 1. **RMI基本概念**: - **...
Weblogic Server与RMI RMI的使用介绍
这篇文章将详细介绍RMI-IIOP的基本概念、工作原理及其在实际应用中的价值。 RMI是Java中的一种机制,允许一个Java对象调用另一个在网络中不同 JVM(Java虚拟机)上运行的对象的方法。RMI-IIOP则是在RMI的基础上添加...
在“Synaptics_RMI3_Specification.pdf”文档中,详细介绍了S3508的硬件架构,包括传感器阵列、信号处理单元和接口模块。其中,传感器阵列部分详细描述了触控感应器的工作原理和配置;信号处理单元则涵盖了数据采集...
《Synaptics RMI4 Specification》是一份详细介绍Synaptics RMI4技术标准的文档,该文档提供了关于如何使用Synaptics RMI4硬件接口的所有必要信息。Synaptics RMI4(Relay Module Interface)是一种用于触控板和触摸...
1. RMI基础知识:解释RMI的概念,介绍其工作原理,包括客户端和服务端的角色。 2. 创建远程接口:讲解如何定义远程接口,它是远程方法调用的合同。 3. 实现远程对象:介绍如何实现远程接口,并创建远程对象实例,...
java rmi详细介绍
这两个手册详细介绍了Synaptics公司的S3202芯片以及RMI4(Remote Mouse Interface 4)协议的运作机制。 S3202是一款由Synaptics公司生产的高性能触控芯片,广泛应用于各种触摸屏设备,如智能手机、平板电脑等。...
在"JAVA RMI.rar"中,"www.pudn.com.txt"可能包含了关于RMI的额外信息,比如项目的介绍、代码示例或者使用说明。而"JAVA RMI"文件可能是一个包含RMI实现的Java类库,或者是演示RMI功能的可执行程序。通过阅读"read ...
1. "Readme.txt"通常包含关于压缩包的使用指南或者简要介绍,可能概述了RMI的基本原理、配置步骤,或者异步消息处理和回调机制的实践示例。 2. "www.pudn.com.txt"可能是从网站pudn.com下载的资源,可能包含了与RMI...
本文将详细介绍如何在Eclipse环境中设置并使用RMI插件来开发RMI应用程序。 #### 二、安装与配置RMI插件 1. **下载插件**:访问[官方文档](http://www.genady.net/rmi/v16/index.html?/rmi/v16/main.html&MAIN16)...