Spring RMI使用心得
Spring RMI一开始看网上的资料感觉很简单,但一次一次的失败告诉我,那不简单,嘻嘻(当然实现之后还是蛮简单的)。
首先我是使用SpringRMI实现两个Web系统之间的通信(其实也就是一个系统调用另一个系统的某个方法),这两个Web系统是部署在一个服务器上的,而且我将rmi的Spring配置文件同我原来的系统的配置文件分开,单独写了一个配置文件(两个系统都是的),这样在服务器启动时就需要加载两个Spring的配置文件,这个是在web.xml中添加(后面介绍)。其实这些都不是很难的问题,我主要说说一些我犯的错误,以供大家参考吧。
1.一开始做测试时很2B,在服务器那端(被调用的系统端),没有启动Spring容器,在客户端这边启动了Spring容器,这肯定是会报错的,报的错大致意思是无法连接的错(哎错误忘了保存了),这是最开始的错误,也是最低级的错误,主要是一开始没理解工作原理,嘻嘻,还花了不少时间呢!
2.启动了容器,但是只加载了rmi的一个Spring配置文件(前面说过,我的rmi的Spring配置文件同系统原来的是分开的),这样其实你要不调用系统其它的bean的话是不会报错的,但我是通过Spring的annotation注入了系统的其它bean,所以会报nullPointException(空指针异常,不知道是不是这样写啊),这也难怪,启动容器时同时加载两个Spring配置文件(就是加载全部的)就好了
3.是调用返回Object对象的方法时又发生问题,网上说需要返回的Object需要实现Serializable接口(即需要可序列化),因为rmi是通过序列化对象返回的,而且所在命名空间都要一样,我一开始包名不同,所以报错,错误是java.lang.ClassNotFoundException: org.innovation.rmi.Student (no security manager: RMI class loader disabled),把包名改为一样的就可以了
4.最困难的是两个项目在Tomcat中的部署先后问题,因为一个项目需要调用另一个项目所以,被调用的得先部署,这个问题就有点纠结了,推荐几篇文章看看吧!
http://johnie-sheng.iteye.com/blog/244497
http://lvqionghua.blog.163.com/blog/static/18527742009101711251403/