今天看了看spring提供的各种远程服务功能,动手从最简单的rmi搞起,上来就遇到了问题,我用的是eclipse3.6,JEE版本身集成的server的整合和自动部署,感觉比原来一直用的myeclipse并不缺少什么,ssh那些自动的支持工具本身也用不上,速度还不是一般的快,以后打算一直用eclipse了,当修改rmi服务方法的内容,web容器自动重新启动时
严重: 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
主要配置文件为
RmiProxyFactoryBean替我们完成了很多rmi的繁琐事,比如生成桩和骨架bean,注册rmi,将RemoteException一类异常转化成未受查异常等等,看来是客户端访问时,留下了缓存stub,解决很简单,messageService那个bean设置一条property:
上网查了一下,有的也提到了设置其它属性,如cacheStub,refreshStubOnConnectFailure,不过不设置也正常了,最后让我们为rmi和ejb默哀
引用
严重: 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
主要配置文件为
<!-- 服务端配置 --> <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默哀