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()
이 호출됩니다. 이게 옳은 거니? 그렇지 않은 경우이 솔루션을 설명하는 방법은 무엇입니까?