クライアントにはすべての実装が必要ですか、それともインターフェイスだけが必要ですか?
詳細: リモートインターフェース Foo を用意しましょう:
public interface Foo extends Remote {
FooMessage getFooMessage () throws RemoteException;
void setFooMessage (FooMessage fm) throws RemoteException;
}
クライアントとサーバー間の通信は、FooMessage によって行われます。
public interface FooMessage {
String getMsg ();
void setMsg (String str);
}
クライアントは非常に単純です。
public void clientCode () {
Foo foo = (Foo)Naming.lookup ("rmi://localhost/FooService");
FooMessage msg = foo.getFooMessage ();
msg.setMsg ("asdf");
foo.setFooMessage (msg);
}
Foo と FooMessage の両方に、サーバー側で具体的な実装が必要です。問題は、クライアントもこれらの実装を持つべきか、それとも RMI メカニズムが暗黙的に実装を転送するべきかということです。