业务服务器 用 RMI 去 登录服务器读取数据.
配置:登陆服务器:
<bean id="myService" class="com.infun.service.RemoteUserServiceImpl" />  
      <bean id="serviceExporter" class="org.springframework.remoting.rmi.RmiServiceExporter">  
         <property name="serviceName">  
             <value>myService</value>  
         </property>  
         <property name="service">  
             <ref bean="myService" />  
         </property>  
         <property name="serviceInterface">  
             <value>com.infun.service.RemoteUserService</value>  
         </property>  
         <property name="registryPort">  
             <value>3307</value>  
         </property>  
     </bean>
业务服务器:
 <bean id="myServerService"  
         class="org.springframework.remoting.rmi.RmiProxyFactoryBean">  
         <property name="serviceInterface">  
             <value>com.infun.service.RemoteUserService</value>  
         </property>
         <property name="serviceUrl">
            <value>rmi://192.168.10.188:3307/myService</value>  
         </property>
    </bean> 
出现如下错误.请教高手指导原因,或解决方案.坐等,谢谢.java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.skymobi.handler.DefaultSkymobiHandler.messageReceived(Unknown Source)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:713)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:793)
at org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:71)
at org.apache.mina.core.session.IoEvent.run(IoEvent.java:63)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
Caused by: org.springframework.remoting.RemoteAccessException: Could not access remote service [rmi://192.168.10.188:3307/myService]; nested exception is java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
java.io.InvalidClassException: com.infun.pojo.AccPOJO; local class incompatible: stream classdesc serialVersionUID = -1909748380974983206, local class serialVersionUID = 8998800086063590729
at org.springframework.remoting.rmi.RmiClientInterceptorUtils.convertRmiAccessException(RmiClientInterceptorUtils.java:181)
at org.springframework.remoting.rmi.RmiClientInterceptor.doInvoke(RmiClientInterceptor.java:342)
at org.springframework.remoting.rmi.RmiClientInterceptor.invoke(RmiClientInterceptor.java:258)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy17.getAccById(Unknown Source)
at com.infun.communication.service.EnterServerICommandService.getResponse(EnterServerICommandService.java:58)
at com.skymobi.sample.service.SkyService.deal(SkyService.java:30)
... 14 more
Caused by: java.rmi.UnmarshalException: error unmarshalling return; nested exception is: 
java.io.InvalidClassException: com.infun.pojo.AccPOJO; local class incompatible: stream classdesc serialVersionUID = -1909748380974983206, local class serialVersionUID = 8998800086063590729
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:173)
at org.springframework.remoting.rmi.RmiInvocationWrapper_Stub.invoke(Unknown Source)
at org.springframework.remoting.rmi.RmiClientInterceptor.doInvoke(RmiClientInterceptor.java:393)
at org.springframework.remoting.rmi.RmiClientInterceptor.doInvoke(RmiClientInterceptor.java:339)
... 20 more
Caused by: java.io.InvalidClassException: com.infun.pojo.AccPOJO; local class incompatible: stream classdesc serialVersionUID = -1909748380974983206, local class serialVersionUID = 8998800086063590729
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:562)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1583)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
at sun.rmi.server.UnicastRef.unmarshalValue(UnicastRef.java:306)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:155)

解决方案 »

  1.   

     java.io.InvalidClassException: com.infun.pojo.AccPOJO; local class incompatible: stream classdesc serialVersionUID = -19097483809
    错误很明显,你有个类: com.infun.pojo.AccPOJO,但是服务器端的这个类和客户端的并不一致
      

  2.   

    晕呀,我走错了方向了.我一直以为是说我服务端的pojo有问题.一直在找~~~却没有想起比较.找了N久,以为是RMI出什么问题了~~~~思路还是没有打开.纠结了3个小时.谢谢.结帖
      

  3.   

    两边的一个类的系列化serialVersionUID 不一致,原因编译的时候随机生成的。
    1、最后打成jar,两边用一个class。
    2、或者显示的增加一个属性serialVersionUID,两边一致。
      

  4.   

    可是我现在两边用的不是同一class哟.也没有显示增加serialVersionUID呀~~~