RemoteObject方法的返回对象是否必须是可序列化的? 例如,A是远程对象,具有以下功能:
SomeObject getMyObject() throws java.rmi.RemoteException
SomeObject是否必须可序列化?
答案 0 :(得分:3)
根据文档应该是:
2.6远程方法调用中的参数传递
远程对象的参数或返回值可以是 any 可序列化的对象。 这包括原始类型,远程 实现的对象和非远程对象 java.io.Serializable接口 。有关如何制作的更多详细信息 类可序列化,请参阅“Java对象序列化” 规范。“类,参数或返回值,不是 本地可用的是由RMI系统动态下载的。看到 关于“动态类加载”一节,了解有关RMI的更多信息 读取参数时下载参数和返回值类, 返回值和例外。
http://docs.oracle.com/javase/1.5.0/docs/guide/rmi/spec/rmi-objmodel7.html
这是有道理的。对象应该从一个节点传输到另一个节点。为了传输,它应该放在一个插槽中(在某一点),所以应该序列化。
答案 1 :(得分:1)
它必须是基本类型,Serializable类型或导出的远程对象本身。在后一种情况下,它会自动转换为Stub。 Registry.lookup()
就是一个例子。