RMI에 대한 질문입니다..
싴흐한세여니
안녕하세요
head first design pattern을 보고 있는데
책 524페이지에 있는 내용에 대해 질문 드리려고 합니다..
======================================================================================================
Q : 왜 스켈레톤을 사용해야 하나요? 자바 1.2부터는 스켈레톤을 안 써도 되도록 바뀌지 않았나요?
A : 예 맞습니다. 꼭 스켈레톤을 만들어야 하는 것은 아닙니다. 자바 1.2부터는 RMI 런타임에서 클라이언트 호출을
리플렉션을 이용하여 직접 원격 서비스로 넘길 수 있게 되었습니다.
하지만 여기서는 클라이언트 스터브와 원격 서비스 사이의 통신을 가능하게 해 주는 메커니즘을 이해하는 데
도움이 될 수 있기 때문에 스켈레톤을 보여드렸습니다....
======================================================================================================
Q : 자바 5에서는 스터브도 더이상 만들 필요가 없다고 하던데, 정말 그런가요?
A : 물론입니다. 자바 5에서는 RMI와 동적 프록시가 결합되어서 스터브마저도 동적 프록시를 통해서
동적으로 생성됩니다. 원격 객체의 스터브는 java.lang.reflect.Proxy 인스턴스(호출 핸들러 포함)로
자동으로 만들어 집니다. 클라이언트에 의한 로컬 호출을 원격 객체한테 전달해주는 역할을 하죠.
따라서 rmic를 전혀 쓰지 않아도 됩니다. 원격 객체의 메소드를 호출하고
그 결과를 리턴받는 작업이 전부 자동으로 처리되니까요.
======================================================================================================
책에 나와있는 내용인데 rmic를 안하고 rmi를 할수 있다는건지 도통 모르겠네요...
고수님들의 친절한 설명 부탁드리겠습니다...
-
뽀야
그런것 같네요. rmic 를 알아서 한 다음 stub을 전송해준다는 말인데, 이건 어디까지나 5.0에서의 이야기겠죠. 이미 시스템이 1.4 로 되어있다면 rmic는 여전히 해줘야 할 듯. 결국 어디까지 호환되게끔 개발하느냐...의 문제인 듯합니다.