java RMI 笔记

一、java RMI介绍
java RMI用于不同虚拟机之间的通信,实现不同虚拟机之间对象方法调用。RMI要解决的问题,是让客户端对远程方法的调用可以相当于对本地方法的调用而屏蔽其中关于远程通信的内容,即使在远程上,也和在本地上是一样的。
二、java RMI核心
是远程对象(remote object)。通俗理解是只要在一台虚拟机A上创建了远程对象(remote object),其它虚拟机X就可以访问虚拟机A中远程对象(remote object)中的方法。每个远程对象(remote object)都要实现一个或者多个远程接口来标识自己,声明了可以被外部系统(其它虚拟机)或者应用调用的方法(当然也有一些方法是不想让人访问的)。
三、java RMI通信模型
java RMI 笔记

客户端调用Stub对象中的本地方法,Stub对象是一个本地对象,它实现了远程对象向外暴露的接口,也就是说它的方法和远程对象暴露的方法的签名是相同的。客户端认为它是调用远程对象的方法,实际上是调用Stub对象中的方法。Stub对象可以理解为是远程对象在本地的一个代理,当客户端调用方法的时候,Stub对象会将调用通过网络传递给远程对象。
从逻辑上来看,数据是在Client和Server之间横向流动的,但是实际上是从Client到Stub,然后从Skeleton到Server这样纵向流动的。
四、Stub对象调用准备
4.1怎么发现远程对象?
在调用远程对象的方法之前需要一个远程对象的引用,如何获得这个远程对象的引用在RMI中是一个关键的问题。在RMI中通过远程对象的标识符引用,客户端通过提供远程对象的标识符访问注册表,来得到远程对象的引用。这个标识符是类似URL地址格式的,它要满足的规范如下:rmi://host:port/name,host指明注册表运行的注解,port表明接收调用的端口,name是一个标识该对象的简单名称。主机和端口都是可选的,如果省略主机,则默认运行在本地;如果端口也省略,则默认端口是1099。
4.2
五、java RM的常用类
java.rmi:提供客户端需要的类、接口和异常;
java.rmi.server:提供服务端需要的类、接口和异常;
java.rmi.registry:提供注册表的创建以及查找和命名远程对象的类、接口和异常;

猜你喜欢

转载自blog.51cto.com/hualsj88/2166390