2013년 10월 18일 금요일

Stub & Skeleton

자바 RMI에서 원격 객체의 메소드를 호출해서 사용하기 위해 다른 메모리 공간(JVM)에 존재하는 원격 객체에 대한 클라이언트쪽 참조(레퍼런스)로서 원격 객체 자체에 대한 레퍼런스를 사용하지 않고 원격 객체에 대한 stub을 참조를 사용한다.
이는 자신이 실행되는 JVM과 다른 메모리 공간에 존재하는 객체의 참조(주소, 포인터)는 의미가 없기 때문이다.
 
 
RMI 클라이언트는 stub 참조를 통해 원격 메소드를 호출하고 stub 은 호출시에 넘어오는 메소드 명이나 파라미터등을 적절한 형태로 packaging 하여 메트웍을 통해 RMI 서버 Application의 원격 객체에 대한 Skeleton에 전달한다.
RMI 서버에서는 이를 다시 unpackaging 하여 원격메소드 명과 파라미터등을 알아내어 실제 원격 객체의 메소드에 전달 한다. 원격메소드의 실행이 완료되어 return 하면 Skeleton은 다시 이 결과를 packaging하여 네트웍을 통해 클라이언트의 stub에게 전송 한다. 이를 packaging하는것을 marshalling, 반대로 unpackaging하는것을 unmarshalling이라 한다.

댓글 없음:

댓글 쓰기