RMI需要解决的问题:
1) 参数的传递;2) 服务器端对服务对象的定位以及方法的调用;3) 返回值的传递。
RMI采用的解决方案:
客户端采用stub,服务器端可采用也可省略skeleton。
stub负责参数的序列化并将消息(远程对象的标识,调用方法的描述,相关参数)发送到服务器端。stub通过继承Remote接口实现此功能。
skeleton负责定位远程对象并调用相应的方法,然后获取返回值或者异常并将之序列化后返回给stub。
1. RMI Registry
1)为什么要对服务进行注册?
A: 客户端可以通过registry获取相应的服务以及对应的stub。
String url = "rmi://localhost/central_warehouse";
Warehouse centralWarehouse = (Warehouse) namingContext.lookup(url);
2)Client通过registry得到的stub包含了那些信息,为什么通过stub就能访问server端提供的服务?
2. Dynamic Class Load
理解Book类是如何自动加载的?
3. Remote Object Activation
理解远程服务对象是如何延迟构建的?