'RMI란'에 해당되는 글 1건

  1. 2008.04.26 [EJB] RMI(Remote Method Invocation)

RMI(Remote Method Invocation)
- 자바가 제공하는 분산 객체들 간의 메서드의 호출
- 서로 다른 호스트에 있는 자바 객체들이 서로 통신할 수 있는것

- J2SE에서 기본으로 제공
- RMI는 분산 시스템에서 필요한 작업을 내부적으로 자동 처리 해준다.
   (프로토콜 작업, stub, skeleton, interface 저장소 구현)

- 사용되는 method들은 RemoteException을 throws 해야 한다.

* 특징
- 객체 지향적이다. (파라미터 값과 리턴값이 모두 객체이다.)
- 프로그램 작성 및 사용이 쉽다. (분산 처리를 위한 부분은 내부적으로 제공해 준다)
- 안전하고 보안성이 있다.
- 기존 시스템과 통합하여 사용 할 수 있다.

* Logical Path

사용자 삽입 이미지

- Application Layer
   어플리케이션이 있는곳
- Stub/Skeleton Layer
   Server/Client 간의 Remote Object Interface 처리를 담당
- Remote Reference Layer
   Marshaling/Unmarshaling 프로세스를 통해 Server와 Client의 VM간 통신을 담당
    (Marshaling : 데이터를 네트워크에서 전송 될 수 있는 바이트 스트림으로 변환해 주는 프로세스)
- Transport Layer
   실제 Network/통신을 담당

* RMI 구조
사용자 삽입 이미지

* Client 의 stub
- 원격 객체의 method를 호출하면 stub의 method가 호출된다.
- 호출된 stub의 method는 네트워크를 통해 서버에게 전달한다.

* Server의 skeleton
- Client의 stub로 부터 온 요청을 해당 method에게 넘겨주고 그 결과 값을 받아 Client의 stub에게 전달한다.

* RMI registry (Naming service)
- RMI 통신이 가능하도록 RMI 환경에서 제공되는 기본 Naming service 프로그램
- Server 프로그램은 RMI registry에 자신을 등록해야만 서비스가 가능
- Client 프로그램은 RMI registry에서 Server를 찾음

* RMI 실행해 보기
1. Remote Interface를 만든다. (java.rmi.Remote를 extends) -> interface Echo
2. Remote Object를 만든다. (java.rmi.server.UnicastRemoteObject를 implements) -> class EchoImple
3. Server Program을 만든다. -> class EchoServer
4. client Program을 만든다. -> class EchoClient
5. 각 클래스를 컴파일한다.
6. stub와 skeleton을 만든다. (cmd창에서 c:\> rmic EchoImple)
   (서버, 클라이언트 폴더를 각각 만들어 필요한 class파일을 넣어준다.)
7. RMI Registry를 실행한다. (cmd창에서 c:\> rmiregistry)
8. Server 실행
9. Client 실행

[Server에 필요한 파일]                [Client에 필요한 파일]
- Server Program                        - Client Program
- Remote Interface                      - Remote Interface
- Remote Object
- Skeleton
- Stub

* Source

사용자 삽입 이미지

(본 소스에 대한 모든 권한은 렉토피아.김동근 샘께 있음을 밝힙니다.)

출처: http://blog.naver.com/rosaria1113?Redirect=Log&logNo=49686496
Posted by euNey^0^
TAG ,

댓글을 달아 주세요