基于spring的rmi缓存问题
程序员文章站
2022-07-11 17:56:16
...
今天看了看spring提供的各种远程服务功能,动手从最简单的rmi搞起,上来就遇到了问题,我用的是eclipse3.6,JEE版本身集成的server的整合和自动部署,感觉比原来一直用的myeclipse并不缺少什么,ssh那些自动的支持工具本身也用不上,速度还不是一般的快,以后打算一直用eclipse了,当修改rmi服务方法的内容,web容器自动重新启动时
[quote]
严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageService' defined in class path resource [config/spring-rmi.xml]: Invocation of init method failed; nested exception is org.springframework.remoting.RemoteLookupFailureException: Lookup of RMI stub failed; nested exception is java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.io.EOFException
[/quote]
主要配置文件为
RmiProxyFactoryBean替我们完成了很多rmi的繁琐事,比如生成桩和骨架bean,注册rmi,将RemoteException一类异常转化成未受查异常等等,看来是客户端访问时,留下了缓存stub,解决很简单,messageService那个bean设置一条property:
上网查了一下,有的也提到了设置其它属性,如cacheStub,refreshStubOnConnectFailure,不过不设置也正常了,最后让我们为rmi和ejb默哀
[quote]
严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageService' defined in class path resource [config/spring-rmi.xml]: Invocation of init method failed; nested exception is org.springframework.remoting.RemoteLookupFailureException: Lookup of RMI stub failed; nested exception is java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.io.EOFException
[/quote]
主要配置文件为
<!-- 服务端配置 -->
<bean id="rmiMessageService" class="com.app.rmi.RmiMessageServiceImpl" />
<bean class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="service" ref="rmiMessageService"/>
<property name="serviceName" value="messageService"/>
<property name="serviceInterface" value="com.app.rmi.RmiMessageService"/>
</bean>
<!-- 客户端配置 -->
<bean id="messageService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name="serviceUrl" value="rmi://localhost/messageService"/>
<property name="serviceInterface" value="com.app.rmi.RmiMessageService"/>
</bean>
RmiProxyFactoryBean替我们完成了很多rmi的繁琐事,比如生成桩和骨架bean,注册rmi,将RemoteException一类异常转化成未受查异常等等,看来是客户端访问时,留下了缓存stub,解决很简单,messageService那个bean设置一条property:
<property name="lookupStubOnStartup" value="false"/>
上网查了一下,有的也提到了设置其它属性,如cacheStub,refreshStubOnConnectFailure,不过不设置也正常了,最后让我们为rmi和ejb默哀
下一篇: 冬天手脚冰凉怎么调理 每天泡脚做有氧运动
推荐阅读
-
spring事务的@Transactional使用事务不生效问题
-
基于vue打包后字体和图片资源失效问题的解决方法
-
python基于右递归解决八皇后问题的方法
-
基于Jquery.history解决ajax的前进后退问题
-
浅析IE针对Ajax请求结果的缓存问题
-
02Spring基于xml的IOC配置--实例化Bean的三种方式
-
完美解决spring websocket自动断开连接再创建引发的问题
-
利用php实现禁用IE和火狐的缓存问题
-
基于vue 添加axios组件,解决post传参数为null的问题
-
基于NetCore+SqlSugar+Layui开发出来的开源框架项目FytSoaCms问题处理