21

chapter 02 : RMI 개요

Embed Size (px)

DESCRIPTION

chapter 02 : RMI 개요. 학습목표. RMI 개요 RMI Architecture RMI 작성 방법 RMI 실습 예제. RMI 개요. 정의 RMI ( Remote Method Invocation ) 원격지의 메소드를 로컬의 메소드 처럼 호출할 수 있는 분산기술 . 분산되어 존재하는 객체간의 통신이 가능한 분산기술 . 자바의 RMI 기술을 포함한 포괄적인 분산기술 . ( CORBA , DCOM 등 ). 특징 소켓통신의 번거로움을 해결할 수 있다 . - PowerPoint PPT Presentation

Citation preview

Page 1: chapter 02  : RMI   개요
Page 2: chapter 02  : RMI   개요

chapter 02chapter 02 : :

RMI RMI 개요개요

Page 3: chapter 02  : RMI   개요

학습목표학습목표

RMI RMI 개요 개요

RMI ArchitectureRMI Architecture

RMI RMI 작성 방법작성 방법

RMI RMI 실습 예제실습 예제

Page 4: chapter 02  : RMI   개요

RMI RMI 개요개요

정의정의

RMI ( RMI ( Remote Method Invocation )Remote Method Invocation )

원격지의 메소드를 로컬의 메소드 처럼 호출할 수 있는원격지의 메소드를 로컬의 메소드 처럼 호출할 수 있는

분산기술분산기술 ..

분산되어 존재하는 객체간의 통신이 가능한 분산기술분산되어 존재하는 객체간의 통신이 가능한 분산기술 ..

자바의 자바의 RMI RMI 기술을 포함한 포괄적인 분산기술기술을 포함한 포괄적인 분산기술 ..

( CORBA , DCOM ( CORBA , DCOM 등 등 ) )

특징특징

소켓통신의 번거로움을 해결할 수 있다소켓통신의 번거로움을 해결할 수 있다 ..

EJB ( Enterprise JavaBeans )EJB ( Enterprise JavaBeans ) 의 기반기술이다의 기반기술이다 ..

직렬화 직렬화 ( Serializable ) ( Serializable )

JNDI ( Java Naming & Directory Interface )JNDI ( Java Naming & Directory Interface )

Page 5: chapter 02  : RMI   개요

RMI ArchitectureRMI Architecture

Client Server

JNDI 을 이용한 Name Server

1: 자원등록 ( Binding )

2: 자원검색 ( Lookup )

3: 자원응답

4: 서버 메소드 호출

5: 메소드 실행

6: 메소드 실행 결과 응답

Page 6: chapter 02  : RMI   개요

RMI RMI 실습 순서실습 순서

1. 1. 소스 작성소스 작성 ..

2. 2. 소스 컴파일소스 컴파일 ..

3. RMI 3. RMI 컴파일컴파일 ..

4. rmiregistry 4. rmiregistry 실행실행 ..

5. 5. 서버 실행서버 실행 ..

6. 6. 클라이언트 실행클라이언트 실행 ..

Page 7: chapter 02  : RMI   개요

RMI RMI 실습실습

Page 8: chapter 02  : RMI   개요

RMI RMI 실습 실습 - - 소스작성소스작성

소스 작성소스 작성 인터페이스 작성인터페이스 작성 ..

인터페이스를 구현한 클래스 작성 인터페이스를 구현한 클래스 작성 ( servant , ( servant , 원격객체 원격객체 ). ).

서버 클래스 작성서버 클래스 작성 ..

클라이언트 클래스 작성클라이언트 클래스 작성 ..

인터페이스 사용하는 이유인터페이스 사용하는 이유 클라이언트에서 객체 의존도를 낮추기 위함 클라이언트에서 객체 의존도를 낮추기 위함 ( loose coupling)( loose coupling)

client server

AA

client serverA

A’A’

(tight coupling) (loose coupling)

Page 9: chapter 02  : RMI   개요

인터페이스 작성인터페이스 작성

java.rmi.Remote java.rmi.Remote 인터페이스를 상속 받는다인터페이스를 상속 받는다 ..

선언된 모든 메소드는 선언된 모든 메소드는 RemoteExceptionRemoteException 를 를 throws throws 한다한다 ..

RMI RMI 실습 실습 - - 소스작성소스작성

Page 10: chapter 02  : RMI   개요

servant servant 작성작성

선언된 인터페이스를 구현한다선언된 인터페이스를 구현한다 ..

java.rmi.server.UnicastRemoteObject java.rmi.server.UnicastRemoteObject 클래스를 상속한다클래스를 상속한다 ..

인자없는 생성자는 반드시 인자없는 생성자는 반드시 RemoteExceptionRemoteException 를 를 throws throws 한다한다 ..

RMI RMI 실습 실습 - - 소스작성소스작성

Page 11: chapter 02  : RMI   개요

서버 프로그램 작성서버 프로그램 작성servant servant 객체 생성객체 생성 ..

Name ServerName Server 에 에 Binding.Binding.

클라이언트 프로그램 작성클라이언트 프로그램 작성

servant servant 객체 객체 Lookup.Lookup.

서버 메소드 호출서버 메소드 호출 ..

RMI RMI 실습 실습 - - 소스작성소스작성

Page 12: chapter 02  : RMI   개요

소스 컴파일 소스 컴파일

javac *.javajavac *.java

RMI RMI 실습 – 소스 컴파일실습 – 소스 컴파일

Page 13: chapter 02  : RMI   개요

RMI RMI 컴파일 컴파일

rmic.exe rmic.exe 명령어로 명령어로 servantservant 를 컴파일 한다를 컴파일 한다 ..

servantservant 이름이름 _Stub.class _Stub.class 파일이 생성된다파일이 생성된다 ..

RMI RMI 실습 – 실습 – RMI RMI 컴파일컴파일

Page 14: chapter 02  : RMI   개요

Name Server Name Server 실행 실행

자바 자바 RMIRMI 는 는 rmiregistry rmiregistry 라는 라는 Name ServiceName Service 를 를 사용한다사용한다 ..

RMI RMI 실습 – 실습 – Name server Name server 실행실행

Server Server 실행 실행

Client Client 실행 실행

Page 15: chapter 02  : RMI   개요

RMI RMI 실습 실습 ArchitectureArchitecture

EchoClientEchoServer

rmiregistry

1: servant 등록 ( Binding )

2: servant 검색 ( Lookup )

3: 자원응답

4: 서버 메소드 호출

5: 메소드 실행

6: 메소드 실행 결과 응답

Echo

EchoImpl

Page 16: chapter 02  : RMI   개요

RMI RMI 실습 실습 ArchitectureArchitecture

EchoClientEchoServer

rmiregistry

1: servant 등록 ( Binding )

2: servant 검색 ( Lookup )

3: 자원응답

4: 서버 메소드 호출

5: 메소드 실행

6: 메소드 실행 결과 응답

Echo

EchoImpl

Page 17: chapter 02  : RMI   개요

servant servant 가 가 UnicastRemoteObjectUnicastRemoteObject 를 상속받지 않은 경우를 상속받지 않은 경우 ..

UnicastRemoteObject.exportObject() UnicastRemoteObject.exportObject() 메소드를 이용한다메소드를 이용한다 ..

RMI RMI 실습 – 실습 – UnicastRemoteObject.exportObject() UnicastRemoteObject.exportObject() 메소드메소드

Page 18: chapter 02  : RMI   개요

stub stub 기능기능

저수준의 네트워킹 작업과 저수준의 네트워킹 작업과 I/O I/O 역할을 담당한다역할을 담당한다 ..

전송되는 객체들의 직렬화 작업과 역직렬화 작업을 한다전송되는 객체들의 직렬화 작업과 역직렬화 작업을 한다 ..

직렬화 직렬화 : Marshalling: Marshalling

역직렬화 역직렬화 : unMashalling: unMashalling

원격객체 전송과 관련된원격객체 전송과 관련된 대리인 역할을 담당한다대리인 역할을 담당한다 ..

stubstub

EchoClientEchoServer

rmiregistry

stubstub

stub

Page 19: chapter 02  : RMI   개요

폴더별 폴더별 RMI RMI 실습실습

Page 20: chapter 02  : RMI   개요

폴더별 폴더별 RMI RMI 실습실습

C:\rmi\client>EchoClient.class Echo.class EchoImpl_Stub.class

C:\rmi\server>EchoServer.class Echo.class

EchoImpl.class EchoImpl_Stub.class

rmiregistry

C:\rmi\registry>Echo.class EchoImpl_Stub.class

Page 21: chapter 02  : RMI   개요

공부한 내용공부한 내용

RMI RMI 개요개요

RMI ArchitectureRMI Architecture

RMI RMI 실습실습

스텁 스텁 ( Stub ) ( Stub )