JAVA RMI使用
来源:互联网 发布:七月煤炭进出口数据 编辑:程序博客网 时间:2024/06/07 09:40
Java RMI 指的是远程方法调用 (Remote Method Invocation)。它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法
Java RMI概念
在Java中,只要一个类继承了java.rmi.Remote接口,即可成为存在于服务器端的远程对象,供客户端访问并提供一定的服务。JavaDoc描述:Remote 接口用于标识其方法可以从非本地虚拟机上调用的接口。任何远程对象都必须直接或间接实现此接口。只有在“远程接口”(扩展 java.rmi.Remote 的接口)中指定的这些方法才可远程使用。
编写一个RMI的步骤
- 定义一个远程接口,此接口需要继承Remote
- 开发远程接口的实现类
- 创建一个server并把远程对象注册到端口
- 创建一个client查找远程对象,调用远程方法
那就先从HelloWorld开始,先看下代码结构
- 服务端
- 客户端
客户端与服务端在两个不同的工程,用于模拟两个JVM,有条件的可以试试位于两台不同电脑。这两个工程都是maven工程,方便jar包管理。
接下来上代码;
服务端:
远程调用的接口类与实现类
public interface RemoteHelloWord extends Remote{ String sayHello() throws RemoteException;}public class RemoteHelloWordImpl implements RemoteHelloWord{ @Override public String sayHello() throws RemoteException { // TODO Auto-generated method stub return "Hello World"; }}
服务发布类 导出远程对象,并注册远程对象到指定端口。
public class RMIServer { public static void main(String[] args) { try { RemoteHelloWord hello=new RemoteHelloWordImpl(); RemoteHelloWord stub=(RemoteHelloWord)UnicastRemoteObject.exportObject(hello, 9999); LocateRegistry.createRegistry(1099); Registry registry=LocateRegistry.getRegistry(); registry.bind("helloword", stub); System.out.println("绑定成功!"); } catch (RemoteException e) { e.printStackTrace(); } catch (AlreadyBoundException e) { e.printStackTrace(); } }}
客户端调用类 获取远程对象并调用
public class RMIClient { public static void main(String[] args) { try { Registry registry = LocateRegistry.getRegistry("localhost"); RemoteHelloWord hello = (RemoteHelloWord) registry.lookup("helloword"); String ret = hello.sayHello(); System.out.println(ret); } catch (RemoteException e) { e.printStackTrace(); } catch (NotBoundException e) { e.printStackTrace(); } }}
执行程序,远程调用成功
代码就贴到这边了,这里只是简单介绍RMI的使用,更多rmi请网上查询资料
下面分析下RMI的优劣势
优势:这种机制给分布计算的系统设计、编程都带来了极大的方便。只要按照RMI规则设计程序,可以不必再过问在RMI之下的网络细节了,如:TCP和Socket等等。任意两台计算机之间的通讯完全由RMI负责。调用远程计算机上的对象就像本地对象一样方便。
- 面向对象: RMI可将完整的对象作为参数和返回值进行传递,而不仅仅是预定义的数据类型。也就是说,可以将类似Java Hash表这样的复杂类型作为一个参数进行传递。
- 安全性: RMI使用Java内置的安全机制保证下载执行程序时用户系统的安全。RMI使用专门为保护系统免遭恶意小程序侵害而设计的安全管理程序。
- 跨平台:RMI可将属性从客户机移动到服务器,或者从服务器移动到客户机。
缺点:
- 只支持JAVA语言,不支持不同开发语言系统间的远程调用。
- RMI对服务器的IP地址和端口依赖很紧密,但是在开发的时候不知道将来的服务器IP和端口如何,但是客户端程序依赖这个IP和端口。这也是RMI的局限性之一。这个问题有两种解决途径:一是通过DNS来解决,二是通过封装将IP暴露到程序代码之外。
阅读全文
0 0
- Java RMI的使用
- JAVA使用RMI通信
- java-RMI的使用
- JAVA RMI使用
- Java RMI(2):项目中使用RMI
- java RMI的简单使用
- Java RMI原理与使用
- Java RMI原理与使用
- 使用java RMI的步骤
- java中RMI的使用
- Java RMI简单使用案例
- java分布式对象(RMI+部署使用RMI的程序)
- Java RMI原理与使用---基础篇
- java 分布式RMI的简单使用
- Java RMI原理与使用---基础篇
- 使用Java的RMI完成远程调用
- java.使用RMI实现上传和下载
- rmi使用
- 什么是sql注入?
- Charles 抓包配置
- EM算法——一步步推导
- UVa 11300
- bootstrap解决图标显示不出来问题,出现GET .woff 404 (Not Found)的问题
- JAVA RMI使用
- java实现链表
- 自定义select-box
- shader中的片元函数与顶点函数
- MINI2440和GQ2440烧录问题
- Tango手机分析 3D点云 室内环境重建
- Singleton 单例模式 -- 饿汉
- iOS 对Image图片本身进行旋转0,90,180,270
- c++中ctype常用函数总结