자바 RMI. 원격 함수 호출이다.
클라이언트에서 바로 서버로 접속이 불가능한 환경일때, 가상환경에 인터페이스를 두고 통신하는 방식이다.
RMI를 알기 전에 분산 컴퓨팅, 분산 객체를 먼저 알아야 한다.
분산 컴퓨팅이란?
- 네트워크에서 서로 다른 시스템 간에 응용프로그램을 분산해서 처리하는 환경을 말한다.
- 즉 하나의 컴퓨터에 존재하는 Application이나 프로세스에서 스스로 처리하거나 수행하기 어려운 작업을 다중 프로세서나 컴퓨터에 분산시키는 것
- 분산 컴퓨팅을 적용한 Application을 Distributed Application이라고 한다.
분산 객체(Distributed Object)
- 분산 컴퓨팅 기술이 객체 지향과 접목되어 하나의 프로세서나 컴퓨터에서 실행되는 객체가 다른 프로세서나 컴퓨터에서 객체와 통신이 가능하도록 하는 기술이 분산 객체 기술이다.
- RMI는 java-to-java
- 분산 객체란 자신이 존재하는 런타임 환경과는 다른 런타임에 있는 객체와 통신이 가능한 객체이다.
RMI(Remote Method Invocation)
- 직렬화 된 Java 클래스의 전송, 원격 프로시저 호출(RPC)과 같은 객체 지향적인 원격 메서드 호출을 수행하는 Java API
- 기존 자바 언어의 장점과 풍부한 API를 분산 객체 기술에 이용이 가능하게 됨
- 다른 실행 환경에 있는 객체의 메소드를 로컬에서 생성한 객체의 메소드와 다름 없이 호출할 수 있도록 하는 "자바의 분산 객체 기술"이다.
- RMI를 사용하면 객체가 다른 JVM에서 실행중인 객체의 메서드를 호출할 수 있다.
- RMI 스펙에 대한 구현은 JRMP(Java Remote Method Protocol)이다.
- Distributed computing model을 구현하기 위한 자바 Object 간의 통신을 구현한 도구이다.
- RMI는 두 개의 객체 스텁 및 스켈레톤을 사용하여 애플리케이션 간의 원격 통신을 제공한다.
스텁
- 스텁은 객체이며 클라이언트 측의 게이트웨이 역할을 한다.
- 모든 나가는 요청은 Stub을 통해 라우팅 된다.
- 클라이언트 측에 위치하며 원격 개체를 나타내는데 실제 원격 객체가 아니라 원격 객체의 껍데기이다.
- 클라이언트가 Stub 객체에서 메서드를 호출하면 다음 작업을 수행한다
- 원격 가상머신(JVM)과의 연결을 시작한다.
- 원격 가상머신(JVM)에 매개 변수를 쓰고 전송(마샬링, 직렬화)합니다.
- 결과를 기다린다.
- 반환 값 또는 예외를 읽는다.(언마샬링, 역직렬화)
- 마지막으로 클라이언트에게 값을 반환합니다.
스켈레톤(Skeleton)
- Skeleton은 객체이며 서버 측의 게이트웨이 역할을 한다.
- 서버로 들어오는 모든 요청은 Skeleton을 통해 라우팅 된다.
- 클라이언트 측에 위치하며 원격 개체를 나타내는데 실제 원격 객체가 아니라 원격 객체의 껍데기이다.
- Skeleton이 수신 요청을 받으면 다음 작업을 수행한다.
- 원격 메소드의 매개 변수를 읽는다.
- 실제 원격 개체에서 메서드를 호출한다.
- 결과를 작성하고 호출자에게 전송(마샬링, 직렬화)한다.
- Java 2 SDK에서는 스켈레톤이 필요없는 스텁 프로토콜이 도입되었다.
'자바 > 개념' 카테고리의 다른 글
[java/개념] 세마포어(Semaphore)와 뮤텍스(Mutex) (0) | 2021.11.06 |
---|---|
[java] Garbage Collector(GC) - 가비지 컬렉터 (0) | 2021.09.18 |
[java] 묵시적 형 변환 (0) | 2021.01.27 |
[java] 상속 super (0) | 2021.01.27 |
[java] 상속에서 클래스 생성 (0) | 2021.01.27 |
댓글