pojo java Bean
服务,继承了Remote接口
服务实现继承了UnicastRemoteObject,可以实现服务发布功能。
服务器
pojo java Bean
服务,继承了Remote接口
客户端测试
此时,客户端打印
服务端返回的的信息为:succes
服务端打印
Order{item=‘davidwang‘, qty=456, orderDate=2020-07-17T13:58:45.464}
java rmi 服务通过实现Remote接口来具有提供rmi的功能,真实的服务实现了UnicastRemoteObject接口,使之具有发布服务的功能,最后使用LocateRegistry注册和Naming服务来绑定服务。
pojo javaBean
服务
服务实现
启动服务端
RmiServiceExporter(服务端,使用UnicastRemoteObject.exportObject()发布)
pojo javaBean
服务
测试类
RmiProxyFactoryBean(客户端,自动调用getObject()方法获取代理类)
此时服务端打印:
create order: Order{item=‘davidwang‘, qty=456, orderDate=2020-07-17T14:20:59.274}
客户端打印:
org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.event.internalEventListenerProcessor
org.springframework.context.event.internalEventListenerFactory
rmiClientTest
exporter
spring rmi返回结果:Order{item=‘davidwang‘, qty=456, orderDate=2020-07-17T14:20:59.274}
spring 封装了java rmi的实现,在服务端使用RmiServiceExporter来发布服务,客户端使用RmiProxyFactoryBean来获取服务。
分别从服务端RmiServiceExporter和客户端RmiProxyFactoryBean来分析
RmiServiceExporter实现了InitializingBean,在bean初始化时,实现了afterPropertiesSet方法。具体实现直接引用prepare()方法。
1.RmiInvocationWrapper继承自Remote,包装了接口服务
等同于接口实现了Remote接口。
2.Registry
使用LocateRegistry.getRegistry方法获取Registry
3.使用jdk的UnicastRemoteObject的exportObject()方法,共有六种使用方式:
客户端RmiProxyFactoryBean继承自RmiClientInterceptor,通过实现InitializingBean的afterPropertiesSet()方法,具体的实现在prepare方法。
支持Naming方式和stub方式
深入spring Integration集成远程调用RMI原理
原文:https://blog.51cto.com/15015181/2556236