'MyRemoteImpl.java'에 해당되는 글 1건

  1. 2013.02.04 RMI

RMI

개발 및 관리/Java 2013. 2. 4. 13:13 posted by HighLighter
반응형

 

MyRemote.java
다운로드

 

MyRemoteClient.java
다운로드

 

MyRemoteImpl.java
다운로드

 

javac -d C:\Users\Administrator\HeadFirstJava\TestRMI\classes MyRemote.java

javac -d C:\Users\Administrator\HeadFirstJava\TestRMI\classes MyRemoteImpl.java

javac -d C:\Users\Administrator\HeadFirstJava\TestRMI\classes MyRemoteClient.java

 

cd C:\Users\Administrator\HeadFirstJava\TestRMI\classes

 

1. 스터브와 스켈레톤 생성

- 1.2 버전 부터 스터브만 만들어지고 스켈레톤은 생성이되지 않는다.

- RMI에서 클라이언트 보조 객체는 스터브(stub)이고 서버 보조 객체는 스켈레톤(skeleton)이다.

 

rmic MyRemoteImpl

 

 

 

 

2. rmiregistry 실행

rmiregistry

 

3. 서비스 시작

java MyRemoteImpl

 

4. 클라이언트 시작

java MyRemoteClient

 

5. RMI를 사용할 때의 주의 사항

1) 원격 서비스를 시작하기 전에 rmiregistry를 실행시키는 것을 잊어버리는 경우가 많다.

(Naming.rebind() 메소드로 서비스를 등록하는 시점에서 반드시 rmiregistry가 실행되고 있어야 한다.)

 

2) 인자와 리턴 유형이 Serializable이 아닌 경우가 종종있다.

(실행해보기 전에 알아내기 힘들다. 컴파일러에서 오류를 잡아 줄 수가 없다.)

 

3) 클라이언트 클래스에 스터브 클래스를 집어 넣는 것을 잊어버리는 경우가 많다.

 

6. 내용 정리

1) 원격 서비스(즉, 원격 클라이언트에서 최종적으로 메소드를 호출하는 객체)를 만들려면 우선 원격 인터페이스를 만들어야 한다.

2) 원격 인터페이스는 java.rmi.Remote 인터페이스를 확장해야하며 모든 메소드에서 RemoteException을 선언해야 한다.

3) 원격 서비스에서는 원격 인터페이스를 구현해야 한다.

4) 원격 서비스는 UnicastRemoteObject를 확장해야 한다.(정확하게 말하자면 원격 객체를 만드는 다른 방법도 있지만 UnicastRemoteObject를 확장하는 방법이 가장 간단하다.)

5) 원격 서비스 클래스에는 반드시 생성자가 있어야 하며 그 생성자에서는 RemoteException을 선언해야 한다. (상위클래스 생성자에서 RemoteException을 선언하기 때문)

6) 원격 서비스의 인스턴스를 반드시 만들어야 하며 그 객체는 RMI  레지스트리에 등록되어야 한다.

7) 원격 서비스를 등록할 때는 Naming.rebind("서비스명", 서비스인스턴스); 라는 선언문으로 rebind()라는 정적 메소드를 호출해야 한다.

8) RMI와 관련된 작업을 할 때는 대부분의 경우에 RemoteException이 던져진다. 즉, 서비스를 레지스트리에 등록하는 작업, 레지스트리에 서비스를 찾는 룩업 작업, 클라이언트에서 스터브에 있는 메소드를 호출하는 모든 원격 메소드 호출 작업에서 그 예외가 던져질 수 있다.

 

 

관련 링크 - RMI 단계별 작성 방법 및 실행

 

http://blog.naver.com/echris7?Redirect=Log&logNo=140016163852

http://cafe.naver.com/junes81/387

http://cafe.naver.com/javachobostudy/34451

http://cafe.naver.com/javal/19

http://wodnrrns.tistory.com/2

반응형