rmi远程调用被拒绝_Java面试技能树13—RMI

1.简介

Java RMI(Java Remote Method Invocation)Java远程方法调用,是Java编程语言里一种用于实现远程过程调用的应用程序编程接口,使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使Java编程人员能够在网络环境中分布操作。RMI宗旨就是尽可能简化远程接口对象的使用。

远程过程调用RPC(Remote Procedure Call)可以用于一个进程调用另一个进程(很可能在另一个远程主机上)中的过程,从而提供了过程的分布能力。Java的RMI则在RPC的基础上向前又迈进了一步,即提供分布式对象间的通讯。

RMI(Remote Method Invocation)为远程方法调用,是允许运行在一个Java虚拟机的对象调用运行在另一个Java虚拟机上的对象的方法。

这两个虚拟机可以是运行在相同计算机上的不同进程中,也可以是运行在网络上的不同计算机中。

2 工作原理

RMI能让一个Java程序去调用网络中另一台计算机的Java对象的方法,那么调用的效果就像是在本机上调用一样。通俗的讲:A机器上面有一个class,通过远程调用,B机器调用这个class 中的方法。

RMI用是Enterprise JavaBeans的支柱,是建立分布式Java应用程序的方便途径。

RMI的基础是接口,RMI构架基于一个重要的原理:定义接口和定义接口的具体实现是分开的。

3. RMI包含部分:

  • 远程服务的接口定义
  • 远程服务接口的具体实现
  • 桩(Stub)和框架(Skeleton)文件
  • 一个运行远程服务的服务器
  • 一个RMI命名服务,它允许客户端去发现这个远程服务
  • 类文件的提供者(一个HTTP或者FTP服务器)
  • 一个需要这个远程服务的客户端程序

4 RMI的用途

RMI的用途是为分布式Java应用程序之间的远程通信提供服务,提供分布式服务。目前主要应用封装在各个J2EE项目框架中,例如Spring,EJB(Spring和EJB均封装了RMI技术)

在Spring中实现RMI:

  • ①在服务器端定义服务的接口,定义特定的类实现这些接口;
  • ②在服务器端使用org.springframework.remoting.rmi.RmiServiceExporter类来注册服务;
  • ③在客户端使用org.springframework.remoting.rmi.RmiProxyFactoryBean来实现远程服务的代理功能;
  • ④在客户端定义访问与服务器端服务接口相同的类

5 RMI的局限

RMI目前使用Java远程消息交换协议JRMP(Java Remote Messaging Protocol)进行通信。JRMP是专为Java的远程对象制定的协议,由于JRMP是专为Java对象制定的,因此,RMI对于用非Java语言开发的应用系统的支持不足。不能与用非Java语言书写的对象进行通信(意思是只支持客户端和服务器端都是Java程序的代码的远程调用,即,由于客户机和服务器都是使用Java编写的,二者平台兼容性的要求仅仅是双方都运行在版本兼容的Java虚拟机上)。

6 RMI调用远程方法的参数和返回值

当调用远程对象上的方法时,客户机除了可以将原始类型的数据作为参数以外,还可以将对象作为参数来传递,与之相对应的是返回值,可以返回原始类型或对象,这些都是通过Java的对象序列化(serialization)技术来实现的。(换而言之:参数或者返回值如果是对象的话必须实现Serializable接口)

7. RMI应

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值