是因为userService没有实现Serializable接口,凡是能被RMI调用的类,一定要实现这个接口的,这个接口其实不用实现什么方法,就是一个标记,打个比方就像一次过向远端传送十个对象,但是对象是通过流的方式传递的,到达远端的时候,远端的计算机怎么把这些流还原成十个不同的对象了?就是靠这些“标记”来还原的。

解决方案 »

  1.   

    java.rmi.MarshalException: error marshalling arguments; nested exception is: 
    java.io.NotSerializableException: org.springframework.beans.factory.support.DefaultListableBeanFactory是你传输的对象没有实现Serializable
    你的方式有些不对?
    配置如下:
        <bean id="xxxServiceProxy" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
            <property name="serviceUrl">
                <value>rmi://localhost/XXXService</value>
            </property>
            <property name="serviceInterface">
                <value>IXXXService</value>
            </property>
        </bean>