•하나의
RMI
Application을
작성 하기 위해서는 3~4개
정도의 자바 파일이 필요 하다.
•필요한
파일
-
원격
인터페이스 :
자바
인터페이스
-
원격
인터페이스를 구현한 클래스 :
클래스
-
RMI 서버
Application
: 클래스
-
RMI 클라이언트
Application
: 클래스
“Hello
World” – 원격
인터페이스
•원격
인터페이스는 원격 객체에 대하여 클라이언트가 호출 할 수 있는 비즈니스 메소드를
정의 한다.
•클라이언트는
원격 인터페이스에서 정의된 메소드만
서로 다른 실행환경에서 원격으로 호출 할 수 있다.
•이렇게
원격에서 호출 가능한 메소드를
“원격 메소드”
라고 한다.
•Hello.java에서는
sayHello라는
원격 메소드를 정의 하고 있다.
//Hello.java
public
interface Hello extends java.rmi.Remote
{
public String sayHello(String
name) throws java.rmi.RemoteException;
}
“Hello
World” – 원격
인터페이스를 구현한 클래스
•HelloImpl.java는
원격 인터페이스 Hello를
구현 한 클래스이며 HelloImpl
클래스의
인스턴스가
원격객체로서 RMI
서버에
의해 이름으로 등록 된다.
•“Hello
World” Application 에서는
java.rmi.UnicastRemoteObject
를
상속하며 원격 이터페이스를
구현하고 있다.
//HelloImpl.java
import
java.rmi.server.*;
import
java.rmi.*;
public
class HelloImpl
extends UnicastRemoteObject
implements Hello {
public HelloImpl()
throws RemoteException
{
super();
}
//원격
메소드
구현
public
String sayHello(String
name) {
return "Hello World ... " +
name + "!";
}
}
“Hello
World” – RMI 서버
Application
•HelloServer.java의
경우 RMI
서버
Application의
기능만을 정의한 단순한 클래스 이다.
•HelloImpl
객체를
생성하고 “HelloRemote”라는
이름으로 등록하며 이후 RMI
클라이언트에서의
메소드
호출을
기다린다.
//HelloServer.java
public
class HelloServer
{
public static void
main(String[] args)
{
try {
HelloImpl
remoteObj
= new HelloImpl();
java.rmi.Naming.rebind("rmi://localhost:1099/HelloRemote",
remoteObj);
System.out.println("Hello
Remote Object bound to the registry and ready to service incoming client
calls...");
} catch(java.rmi.RemoteException
e) {
System.err.println("Exception
occurred during processing incoming method call");
} catch(java.net.MalformedURLException
e) {
댓글 없음:
댓글 쓰기