RMI 로 분포 식 자바 응용 프로그램 상세 설명 만 들 기
RMI 의 기 초 는 인터페이스 이 고 RMI 구 조 는 중요 한 원 리 를 바탕 으로 한다.인터페이스 정의 와 인터페이스의 구체 적 인 실현 은 분리 된다.다음은 구체 적 인 예 를 통 해 간단 한 원 격 계산 서 비 스 를 구축 하고 이 를 사용 하 는 클 라 이언 트 프로그램 을 만 듭 니 다.
정상적으로 작 동 하 는 RMI 시스템 은 다음 과 같은 몇 가지 부분 으로 구성 된다.
●원 격 서비스의 인터페이스 정의
●원 격 서비스 인터페이스의 구체 적 실현
●파일(Stub)과 프레임(Skeleton)파일
●원 격 서 비 스 를 실행 하 는 서버
●RMI 이름 서비스,클 라 이언 트 가 원 격 서 비 스 를 발견 할 수 있 도록 합 니 다.
●클래스 파일 공급 자(HTTP 또는 FTP 서버)
●이 원 격 서비스 가 필요 한 클 라 이언 트 프로그램
다음은 간단 한 RMI 시스템 을 차근차근 구축 하 겠 습 니 다.먼저 기계 에 새 폴 더 를 만들어 서 우리 가 만 든 파일 을 놓 을 수 있 습 니 다.간단하게 보기 위해 서 우 리 는 하나의 폴 더 로 클 라 이언 트 와 서버 코드 를 저장 하고 같은 디 렉 터 리 에서 서버 와 클 라 이언 트 를 실행 합 니 다.
만약 모든 RMI 파일 이 이미 설계 되 었 다 면,당신 은 아래 의 몇 가지 절차 로 당신 의 시스템 을 생 성 해 야 합 니 다.
1.인터페이스의 자바 코드 를 작성 하고 컴 파일 합 니 다.
2.인터페이스 에서 실 현 된 자바 코드 를 작성 하고 컴 파일 합 니 다.
3.인터페이스 구현 클래스 에서 파일(Stub)과 프레임 워 크(Skeleton)클래스 파일 생 성
4.원 격 서비스의 주 실행 프로그램 작성
5.RMI 클 라 이언 트 프로그램 작성
6,설치 및 운영 RMI 시스템
1.인터페이스
첫 번 째 단 계 는 서비스 인 터 페 이 스 를 구축 하고 컴 파일 하 는 자바 코드 입 니 다.이 인 터 페 이 스 는 원 격 서 비 스 를 제공 하 는 모든 기능 을 정의 합 니 다.다음은 원본 프로그램 입 니 다.
import java.rmi.Remote;
public interface Calculator extends Remote {
public long add(long a, long b) throws java.rmi.RemoteException;
public long sub(long a, long b) throws java.rmi.RemoteException;
public long mul(long a, long b) throws java.rmi.RemoteException;
public long div(long a, long b) throws java.rmi.RemoteException;
}
이 인 터 페 이 스 는 Remote 에서 계승 되 며,모든 정의 방법 은 Remote Exception 이상 대상 을 던 져 야 합 니 다.
이 파일 을 만들어 서 방금 디 렉 터 리 에 저장 하고 컴 파일 합 니 다.
>javac Calculator.java
2.인터페이스의 구체 적 인 실현
다음 단계 에 우 리 는 원 격 서비스의 구체 적 인 실현 을 써 야 합 니 다.이것 은 Calculator Impl 류 파일 입 니 다.
import java.rmi.server.UnicastRemoteObject;
public class CalculatorImpl extends UnicastRemoteObject implements Calculator {
// , RemoteException
public CalculatorImpl() throws java.rmi.RemoteException {
super();
}
public long add(long a, long b) throws java.rmi.RemoteException {
return a + b;
}
public long sub(long a, long b) throws java.rmi.RemoteException {
return a - b;
}
public long mul(long a, long b) throws java.rmi.RemoteException {
return a * b;
}
public long div(long a, long b) throws java.rmi.RemoteException {
return a / b;
}
}
마찬가지 로,이 파일 을 당신 의 디 렉 터 리 에 저장 한 후에 그 를 컴 파일 하 세 요.
이 실현 클래스 는 유 니 캐 스 트 RemoteObject 를 사용 하여 RMI 시스템 을 연결 합 니 다.
우리 의 예 에서 우 리 는 유 니 캐 스 트 Remote Object 와 같은 유형 에서 직접 물 려 받 았 다.사실은 꼭 이렇게 해 야 하 는 것 은 아니다.
만약 하나의 클래스 가 유 니 캐 스 트 RmeoteObject 에서 계승 되 지 않 는 다 면,그것 의 exportObject()방법 으로 RMI 에 연결 해 야 한다.
유 니 캐 스 트 RemoteObject 에서 클래스 를 계승 하려 면 구조 함 수 를 제공 하고 RemoteException 대상 을 던 져 야 합 니 다.
이 구조 함수 가 슈퍼()를 호출 하면 유 니 캐 스 트 RemoteObject 의 코드 를 오래 활성화 하여 RMI 연결 과 원 격 대상 의 초기 화 를 완성 합 니 다.
3.말뚝(Stubs)과 프레임(Skeletons)
다음 단 계 는 RMI 컴 파일 러 rmic 를 사용 하여 파일 과 프레임 파일 을 만 드 는 것 입 니 다.이 컴 파일 은 원 격 서비스 구현 클래스 파일 에서 실 행 됩 니 다.
>rmic CalculatorImpl
디 렉 터 리 아래 에서 위의 명령 을 실행 합 니 다.위의 명령 을 성공 적 으로 수행 하면 Calculator 를 발견 할 수 있 습 니 다.stub.class 파일,
자바 2SDK 를 사용한다 면 Calculator 를 발견 할 수 있 습 니 다.Skel.class 파일.
4.호스트 서버
원 격 RMI 서 비 스 는 서버 에서 실행 되 어야 합 니 다.Calculator Server 클래스 는 매우 간단 한 서버 입 니 다.
import java.rmi.Naming;
public class CalculatorServer {
public CalculatorServer() {
try {
Calculator c = new CalculatorImpl();
Naming.rebind("rmi://localhost:1099/CalculatorService", c);
} catch (Exception e) {
System.out.println("Trouble: " + e);
}
}
public static void main(String args[]) {
new CalculatorServer();
}
}
이 서버 프로그램 을 만 들 고 디 렉 터 리 에 저장 하고 컴 파일 합 니 다.
5.클 라 이언 트
클 라 이언 트 소스 코드 는 다음 과 같 습 니 다.
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.net.MalformedURLException;
import java.rmi.NotBoundException;
public class CalculatorClient {
public static void main(String[] args) {
try {
Calculator c = (Calculator) Naming.lookup("rmi://localhost/CalculatorService");
System.out.println(c.sub(4, 3));
System.out.println(c.add(4, 5));
System.out.println(c.mul(3, 6));
System.out.println(c.div(9, 3));
} catch (MalformedURLException murle) {
System.out.println();
System.out.println("MalformedURLException");
System.out.println(murle);
} catch (RemoteException re) {
System.out.println();
System.out.println("RemoteException");
System.out.println(re);
} catch (NotBoundException nbe) {
System.out.println();
System.out.println("NotBoundException");
System.out.println(nbe);
} catch (java.lang.ArithmeticException ae) {
System.out.println();
System.out.println("java.lang.ArithmeticException");
System.out.println(ae);
}
}
}
이 클 라 이언 트 프로그램 을 디 렉 터 리 에 저장 하 십시오.
6.RMI 시스템 실행
이제 우 리 는 이 간단 한 RMI 시스템 을 실행 하 는 데 필요 한 모든 파일 을 만 들 었 습 니 다.이제 우 리 는 이 RMI 시스템 을 실행 할 수 있 습 니 다!즐 기세 요.
우 리 는 명령 콘 솔 에서 이 시스템 을 실행 합 니 다.세 개의 콘 솔 창 을 열 어야 합 니 다.하 나 는 서버 를 실행 하고 하 나 는 클 라 이언 트 를 실행 하 며 하 나 는 RMIRegistry 를 실행 해 야 합 니 다.
우선 등록 프로그램 RMIRegistry 를 실행 합 니 다.방금 쓴 클래스 를 포함 하 는 디 렉 터 리 에서 이 등록 프로그램 을 실행 해 야 합 니 다.
>rmiregistry
자,이 명령 이 성공 하면 등록 프로그램 이 실 행 됩 니 다.상관 하지 마 세 요.지금 은 다른 콘 솔 로 전환 합 니 다.두 번 째 콘 솔 에서 저 희 는 서버 Calculator Service 를 실행 하고 다음 명령 을 입력 하 십시오.
>java CalculatorServer
이 서버 는 클 라 이언 트 의 연결 을 기다 리 는 메모리 에 인터페이스의 실현 을 불 러 오기 시작 했다.자,이제 세 번 째 콘 솔 로 전환 하여 클 라 이언 트 를 시작 합 니 다.
>java CalculatorClient
만약 이 모든 것 이 성공 적 으로 실행 된다 면 아래 의 출력 을 보아 야 합 니 다.
1 9 18 3
만약 당신 이 위의 출력 을 보 았 다 면,축하합니다.당신 은 성공 하 였 습 니 다.당신 은 이미 RMI 시스템 을 성공 적 으로 만 들 었 고,그 로 하여 금 정확하게 일 하 게 하 였 습 니 다.같은 컴퓨터 에서 실행 되 더 라 도 RMI 는 네트워크 스 택 과 TCP/IP 를 사용 하여 통신 을 하고 세 개의 서로 다른 자바 가상 컴퓨터 에서 실 행 됩 니 다.이것 은 이미 완전한 RMI 시스템 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.