RemoteObject方法返回值

时间:2013-02-11 21:52:47

标签: java rmi remoteobject

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

SomeObject getMyObject() throws java.rmi.RemoteException

SomeObject是否必须可序列化?

2 个答案:

答案 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()就是一个例子。