0

RemoteObject 方法的返回对象是否必须是可序列化的?例如,A 是一个远程对象,具有以下功能:

SomeObject getMyObject() throws java.rmi.RemoteException

SomeObject 必须是可序列化的吗?

4

2 回答 2

3

那么根据文档它应该是:

2.6 远程方法调用中的参数传递

远程对象的参数或返回值可以是任何可序列化的对象这包括实现 java.io.Serializable 接口的原始类型远程对象非远程对象。有关如何使类可序列化的更多详细信息,请参阅“Java 对象序列化规范”。本地不可用的参数或返回值的类由 RMI 系统动态下载。有关 RMI 在读取参数、返回值和异常时如何下载参数和返回值类的更多信息,请参阅“动态类加载”部分。

http://docs.oracle.com/javase/1.5.0/docs/guide/rmi/spec/rmi-objmodel7.html

这是有道理的。对象应该从一个节点传输到另一个节点。为了被传输,它应该被放置在一个套接字中(在某个时候),所以它应该被序列化。

于 2013-02-11T21:57:39.293 回答
1

它必须是原始类型、可序列化类型或导出的远程对象本身。在后一种情况下,它会自动转换为存根。Registry.lookup()是一个例子。

于 2013-02-12T00:26:00.783 回答