简体   繁体   中英

Returning a Java Vector from Server to Client using RMI

I'm new to RMI and I was trying to return a vector of a user-defined class to the client. I am getting an unmarshal exception.

Here is my code.

The exception I'm getting is:-

java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
            java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: Text
            at sun.rmi.server.UnicastRef.invoke(Unknown Source)
            at HelloServerImplementation_Stub.viewTexts(Unknown Source)
            at HelloClient.main(HelloClient.java:30)
    Caused by: java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: Text
            at java.io.ObjectInputStream.readObject0(Unknown Source)
            at java.io.ObjectInputStream.readArray(Unknown Source)
            at java.io.ObjectInputStream.readObject0(Unknown Source)
            at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
            at java.io.ObjectInputStream.readSerialData(Unknown Source)
            at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
            at java.io.ObjectInputStream.readObject0(Unknown Source)
            at java.io.ObjectInputStream.readObject(Unknown Source)
            at sun.rmi.server.UnicastRef.unmarshalValue(Unknown Source)
            ... 3 more
    Caused by: java.io.NotSerializableException: Text
            at java.io.ObjectOutputStream.writeObject0(Unknown Source)
            at java.io.ObjectOutputStream.writeArray(Unknown Source)
            at java.io.ObjectOutputStream.writeObject0(Unknown Source)
            at java.io.ObjectOutputStream.access$300(Unknown Source)
            at java.io.ObjectOutputStream$PutFieldImpl.writeFields(Unknown Source)
            at java.io.ObjectOutputStream.writeFields(Unknown Source)
            at java.util.Vector.writeObject(Unknown Source)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
            at java.lang.reflect.Method.invoke(Unknown Source)
            at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
            at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
            at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
            at java.io.ObjectOutputStream.writeObject0(Unknown Source)
            at java.io.ObjectOutputStream.writeObject(Unknown Source)
            at sun.rmi.server.UnicastRef.marshalValue(Unknown Source)
            at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
            at sun.rmi.transport.Transport$1.run(Unknown Source)
            at sun.rmi.transport.Transport$1.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at sun.rmi.transport.Transport.serviceCall(Unknown Source)
            at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
            at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
            at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
            at java.lang.Thread.run(Unknown Source)

The reason of exception is

Caused by: java.io.NotSerializableException: Text
                at java.io.ObjectOutputStream.writeObject0(Unknown Source)

Implement Serializable interface in your Text class.

class Text implements Serializable{

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM