RemoteObjectメソッドの戻りオブジェクトはシリアル化可能である必要がありますか?たとえば、Aはリモートオブジェクトであり、次の機能があります。
SomeObject getMyObject() throws java.rmi.RemoteException
SomeObjectはシリアル化可能である必要がありますか?
RemoteObjectメソッドの戻りオブジェクトはシリアル化可能である必要がありますか?たとえば、Aはリモートオブジェクトであり、次の機能があります。
SomeObject getMyObject() throws java.rmi.RemoteException
SomeObjectはシリアル化可能である必要がありますか?
ドキュメントによると、次のようになります。
2.6リモートメソッド呼び出しでのパラメータの受け渡し
リモートオブジェクトへの引数またはリモートオブジェクトからの戻り値は、シリアル化可能な任意のオブジェクトにすることができます。これには、プリミティブ型、リモートオブジェクト、およびjava.io.Serializableインターフェイスを実装する 非リモートオブジェクトが含まれます。クラスをシリアライズ可能にする方法の詳細については、「Javaオブジェクトのシリアライズ仕様」を参照してください。ローカルで使用できないパラメータまたは戻り値のクラスは、RMIシステムによって動的にダウンロードされます。RMIがパラメーター、戻り値、および例外を読み取るときにパラメーターと戻り値のクラスをダウンロードする方法の詳細については、「動的クラスのロード」のセクションを参照してください。
http://docs.oracle.com/javase/1.5.0/docs/guide/rmi/spec/rmi-objmodel7.html
そして、これは理にかなっています。オブジェクトは、あるノードから別のノードに送信する必要があります。送信するには、ソケットに(ある時点で)配置する必要があるため、シリアル化する必要があります。
プリミティブ型、シリアル化可能な型、またはエクスポートされたリモート オブジェクト自体のいずれかである必要があります。後者の場合、自動的にスタブに変換されます。Registry.lookup()
は一例です。