2011-03-03 9 views
1

RMI 서버에 1 개의 「Manager」클래스를 export하고 있습니다. RMI 클라이언트는 서버에 접속 해, "Manager"클래스의 인스턴스를 얻어 온다. 그런 다음 "Manager.createBox()"를 호출하여 상자를 만든 다음 "Manager.getBox (0)"를 호출하여 상자를 검색합니다.RMI 리모트 오브젝트의 인스턴스화

이제 방금 가져온 "상자"를 수정하고 수정 한 다음 "Manager.getBox (0)"을 다시 호출하면 변경 사항없이 원래 상자가 다시 나타납니다. 어떻게 할 수 있습니까? 내가 방금 클라이언트 측에서 Box에 변경 한 사항을 "적용"하겠습니까? 또는 관리자에게 메소드를 추가해야합니까?

답변

2

상자가 단순한 직렬화 가능 클래스 인 경우 getBox가 호출 될 때 해당 상태가 간단하게 직렬화되고 유선으로 전송되며 클라이언트에서 직렬화 해제됩니다. 따라서 클라이언트는 원래 상자가 아닌 상자의 복사본을 수정합니다.

수정 된 상자를 서버에 보내려면 서버 (manager.modifyBox(box))로 다시 보내거나 Box를 원격 개체로 만듭니다 (BoxImpl 구상 클래스에 의해 구현되는 원격 인터페이스 상자로 만들어야 함). UnicastRemoteObject를 확장).