원격 프록시
출처 : http://wiki.oracleclub.com/pages/viewpage.action?pageId=1507415
2. 원격프록시
2.1 원격프록시 개요
로컬 환경에 존재하면서, 원격객체에 대하여 대변자 역할을 하는 객체를 원격 프록시라고 한다.
- 원격객체- 다른 JVM의 Heap영역에 살고있는 객체
2.2 원격에 있는 왕뽑기 기계를 감시하는 모니터링 프로그램 만들기

클라이언트 객체([GumballMonitor])에서는 원격객체([GumballMachine])의 메소드를 호출하는 것처럼 행동하지만, 실제로는 로컬 힙에 들어있는 원격객체 모양과 비슷한 ‘프록시’객체의 메소드를 호출하고 있는 것이다.
네트워크 통신과 관련된 저수준 작업은 이 프록시 객체에서 처리해준다.
2.3 원격메소드의 기초

- 클라이언트 객체에서 클라이언트 보조객체의 메소드를 호출한다.
- 클라이언트 보조객체에서는 메소드 호출에 대한 정보(인자, 메소드이름 등)를 잘 포장해서 네트워크를 통해 서비스 보조객체한테 전달한다.
- 서비스 보조객체에서는 클라이언트 보조객체로 부터 받은 정보를 해석하여 어떤 객체의 어떤 메소드를 호출할지 알아낸 다음 진짜 서비스객체의 ‘진짜 메소드’를 호출한다.
- 서비스객체의 메소드가 호출되고, 메소드 실행이 끝나면 서비스 보조객체에 결과를 리턴해준다.
- 호출결과로 리턴된 정보를 포장해서 서비스 보조객체에서 클라이언트 보조객체한테 전달한다.
- 클라이언트 보조객체에서는 리턴된 값을 해석하여 클라이언트 객체한테 리턴한다.
클라이언트 객체 입장에서는 메소드 호출이 어디로 전달되었었는지, 어디에서 왔는지 전혀 알 수 없다.
2.4 원격서비스 만들기
- 원격인터페이스 만들기
클라이언트에서 호출가능한 메소드를 정의 - 서비스 구현 클래스 만들기
실제 작업을 처리하는 클래스 - rmic를 이용하여 stub과 skeleton만들기
클라이언트 및 서비스 보조객체 생성(rmic 툴을 이용하여 자동으로 생성) - rmiregistry실행
클라이언트에서 stub을 받아갈수 있는 장소 - 원격 서비스 시작
서비스 객체를 가동. 서비스를 구현한 클래스에서 서비스의 인스턴스를 만들고 그 인스턴스를 RMI레지스트리에 등록




