最近在做一个基于RMI的可扩展框架。由于Spring很是方便,便打算用Spring的RMI特性。但是在实现如下场景时,出现了问题:程序客户端希望通过RMI获取远程服务Master的Stub,而且要以远程调用的方式使用Master提供的Service。
public class Client {
Master master; // 由Spring RmiProxyFactoryBean获得。
public void someMethod() {
Service service = master.getService();
service.doSomeRemotely();
}
}
由于我所见过的资料中都没有关于远程返回值的引用传递。我自己做了如下尝试。
1. 让Service的实现类实现java.rmi.Remote接口;Spring报“对象不能序列化”错误。
2. 让Service的实现类同时实现java.rmi.Remote和java.io.Serializable接口;错误消失,但是对service执行的调用仍旧是本地调用(未发生在远端的JVM中)。
3. 让Service的实现类继承UnicastRemoteObject;在客户端报ClassCastException,错误提示说不能把Proxy cast为Service.
通过试验,我没有试出如何让Spring实现返回对象的引用传递。我的结论是Spring RMI返回值引用传递。如果有哪位大虾可以证实或证否我的结论的,请不吝赐教。
分享到:
相关推荐
SpringRMI小例子代码,仅供参考。SpringRMI小例子代码,仅供参考。
闲来无事,做了个Spring RMI的小例子,非常易懂。
为了避免业务逻辑重新开发,顾使用spring rmi,把所有的bean作为rmi服务暴漏出来,在客户端只需要把项目依赖过来就ok,或者把以前的接口导入过来。 参考文档:...
Spring集成rmi,实现远程服务,使用RMI集成实例
spring RMI 简单例子
spring RMI 服务(自动把service发布为RMI服务),本例子加入了spring的预处理,可以根据自己的需要把指定位置的bean发布为 RMI 服务。
spring rmi 客户端 服务器 调用
spring rmi 远程调用服务端和客户端源码,eclipse环境,jdk1.7.
基于spring rmi的一些小改造,在原基础上加入了线程池控制线程数。
Spring Rmi的使用,对Spring RMI进行全访问的介绍,并介绍了其中的源代码部分
spring和RMI分布式整合源码
spring RMI 远程接口调用 包含服务端客户端程序,可完整运行
教您如何创建JAVA RMI ,创建Spring RMI。
1. 远程调用RMI(Remote Method Invocation): 通过使用 RmiProxyFactoryBean 和 RmiServiceExporter,并且,Spring支持两个传统的RMI(使用 java.rmi.Remote接口和java.rmi.RemoteException)和通过RMI调用器实现的...
springRMI接口实现
spring+rmi非本地实现,包含客户端和服务端。
Spring整合RMI的使用,实现不同项目间方法的远程调用。
NULL 博文链接:https://dolphin-ygj.iteye.com/blog/539379
rmi与spring整合实例
博文链接:https://callan.iteye.com/blog/162756