RMIでの経験はありません。インターネットではわからないコードがいくつか見つかりました。したがって、rmiクライアントとrmiサーバーがあります。RMI:UnicastRemoteObjectとして参照されているサーバーからのオブジェクト
public class RmiServer{
public Wrapper getWrapper(){
return new Wrapper(new Foo());
}
}
public class Wrapper implements Serializable{
private FooI foo;
public Wrapper(FooI foo){
this.foo=foo;
}
public void doIt(){
foo.doIt();
}
}
public interface FooI extends Remote{
public void doIt();
}
public class Foo implements FooI{
public void doIt(){...}
public Foo(){
//PLEASE, PAY ATTENTION TO THIS LINE
UnicastRemoteObject.exportObject(this, 8888);
}
}
私はこのコードをこのように自分自身に説明します。 Wrapper
クラスは直列化可能であるため、そのオブジェクトはRmiClient
からRmiServer
(getWrapper()で)に転送されます。 Foo
はRemote
インターフェイスを実装しており、そのオブジェクトはRmiClient
には転送されず、この参照の代わりにUnicastRemoteObject
が転送されます。したがって、クライアント側ではWrapper.doIt()
が呼び出され、サーバ側ではFoo.doIt()
が呼び出されます。これは正しいですか?そうでない場合、この解決策を説明する方法は?