210 likes | 345 Views
chapter 02 : RMI 개요. 학습목표. RMI 개요 RMI Architecture RMI 작성 방법 RMI 실습 예제. RMI 개요. 정의 RMI ( Remote Method Invocation ) 원격지의 메소드를 로컬의 메소드 처럼 호출할 수 있는 분산기술 . 분산되어 존재하는 객체간의 통신이 가능한 분산기술 . 자바의 RMI 기술을 포함한 포괄적인 분산기술 . ( CORBA , DCOM 등 ). 특징 소켓통신의 번거로움을 해결할 수 있다 .
E N D
chapter 02 : RMI 개요
학습목표 • RMI 개요 • RMI Architecture • RMI 작성 방법 • RMI 실습 예제
RMI 개요 • 정의 • RMI ( Remote Method Invocation ) • 원격지의 메소드를 로컬의 메소드 처럼 호출할 수 있는 • 분산기술. • 분산되어 존재하는 객체간의 통신이 가능한 분산기술. • 자바의 RMI 기술을 포함한 포괄적인 분산기술. • ( CORBA , DCOM 등 ) • 특징 • 소켓통신의 번거로움을 해결할 수 있다. • EJB ( Enterprise JavaBeans )의 기반기술이다. • 직렬화 ( Serializable ) • JNDI ( Java Naming & Directory Interface )
JNDI을 이용한 Name Server 1: 자원등록 ( Binding ) 2: 자원검색 ( Lookup ) 3: 자원응답 Client 4: 서버 메소드 호출 Server 6: 메소드 실행 결과 응답 5: 메소드 실행 • RMI Architecture
RMI 실습 순서 • 1. 소스 작성. • 2. 소스 컴파일. • 3. RMI 컴파일. • 4. rmiregistry 실행. • 5. 서버 실행. • 6. 클라이언트 실행.
A’ A A A’ client server client server A • RMI 실습 - 소스작성 • 소스 작성 • 인터페이스 작성. • 인터페이스를 구현한 클래스 작성 ( servant , 원격객체 ). • 서버 클래스 작성. • 클라이언트 클래스 작성. • 인터페이스 사용하는 이유 • 클라이언트에서 객체 의존도를 낮추기 위함 ( loose coupling) (tight coupling) (loose coupling)
RMI 실습 - 소스작성 • 인터페이스 작성 • java.rmi.Remote 인터페이스를 상속 받는다. • 선언된 모든 메소드는 RemoteException를 throws 한다.
RMI 실습 - 소스작성 • servant 작성 • 선언된 인터페이스를 구현한다. • java.rmi.server.UnicastRemoteObject 클래스를 상속한다. • 인자없는 생성자는 반드시 RemoteException를 throws 한다.
RMI 실습 - 소스작성 • 서버 프로그램 작성 • servant 객체 생성. • Name Server에 Binding. • 클라이언트 프로그램 작성 • servant 객체 Lookup. • 서버 메소드 호출.
RMI 실습 –소스 컴파일 • 소스 컴파일 • javac *.java
RMI 실습 – RMI 컴파일 • RMI 컴파일 • rmic.exe 명령어로 servant를 컴파일 한다. • servant이름_Stub.class 파일이 생성된다.
RMI 실습 – Name server 실행 • Name Server 실행 • 자바 RMI는 rmiregistry 라는 Name Service를 사용한다. • Server 실행 • Client 실행
rmiregistry 1: servant 등록 ( Binding ) 2: servant 검색 ( Lookup ) 3: 자원응답 Echo 4: 서버 메소드 호출 EchoImpl EchoClient EchoServer 6: 메소드 실행 결과 응답 5: 메소드 실행 • RMI 실습 Architecture
rmiregistry Echo EchoImpl EchoClient EchoServer • RMI 실습 Architecture 1: servant 등록 ( Binding ) 2: servant 검색 ( Lookup ) 3: 자원응답 4: 서버 메소드 호출 6: 메소드 실행 결과 응답 5: 메소드 실행
RMI 실습 – UnicastRemoteObject.exportObject() 메소드 • servant 가 UnicastRemoteObject를 상속받지 않은 경우. • UnicastRemoteObject.exportObject() 메소드를 이용한다.
rmiregistry EchoClient EchoServer stub stub stub • stub • stub 기능 • 저수준의 네트워킹 작업과 I/O 역할을 담당한다. • 전송되는 객체들의 직렬화 작업과 역직렬화 작업을 한다. • 직렬화 : Marshalling • 역직렬화 : unMashalling • 원격객체 전송과 관련된대리인 역할을 담당한다.
C:\rmi\registry>Echo.class EchoImpl_Stub.class rmiregistry C:\rmi\client>EchoClient.class Echo.class EchoImpl_Stub.class C:\rmi\server>EchoServer.class Echo.class EchoImpl.class EchoImpl_Stub.class • 폴더별 RMI 실습
공부한 내용 • RMI 개요 • RMI Architecture • RMI 실습 • 스텁 ( Stub )