简体   繁体   English

使用RMI将Java向量从服务器返回到客户端

[英]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. 我是RMI的新手,我试图将用户定义类的向量返回给客户端。 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. Text类中实现Serializable接口。

class Text implements Serializable{

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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