자바 rmi 예제


0 Flares Filament.io 0 Flares ×

RMI Java 응용 프로그램을 작성하려면 아래 단계를 따라야 합니다 – 분산 Hello World 예제는 간단한 클라이언트를 사용하여 원격 호스트에서 실행중인 서버에 원격 메서드 호출을 만듭니다. 클라이언트는 서버에서 “안녕하세요, 세상!” 메시지를 받습니다. 클라이언트에서 명명 클래스의 lookup() 메서드를 사용하여 스텁 개체를 얻고 이 개체에서 메서드를 호출합니다. 이 예제에서는 동일한 컴퓨터에서 서버 및 클라이언트 응용 프로그램을 실행하므로 localhost를 사용하고 있습니다. 다른 컴퓨터에서 원격 개체에 액세스하려면 로컬 호스트를 원격 개체가 있는 호스트 이름(또는 IP 주소)으로 변경합니다. Java RMI 레지스트리는 클라이언트가 원격 개체에 대한 참조(스텁)를 얻을 수 있는 단순화된 이름 서비스입니다. 일반적으로 레지스트리는 클라이언트가 사용해야 하는 첫 번째 원격 개체를 찾기 위해서만 사용됩니다(전혀). 그런 다음 일반적으로 첫 번째 개체는 다른 개체를 찾기 위한 응용 프로그램별 지원을 제공합니다. 예를 들어, 참조는 다른 원격 메서드 호출로부터의 매개 변수 또는 반환 값으로 얻을 수 있다.

이 작동 방식에 대한 설명은 Java RMI에 팩터리 패턴 적용을 참조하십시오. 호출자(클라이언트, 피어 또는 애플릿)가 원격 개체에서 메서드를 호출할 수 있도록 하려면 해당 호출자가 먼저 원격 개체에 대한 스텁을 가져와야 합니다. 부트스트래핑의 경우 Java RMI는 응용 프로그램이 원격 개체의 스텁에 이름을 바인딩하고 클라이언트가 스텁을 얻기 위해 이름으로 원격 개체를 조회할 수 있도록 레지스트리 API를 제공합니다. 이 자습서에서는 Java RMI에 대한 간략한 소개와 이것이 클라이언트-서버 응용 프로그램의 토대가 될 수 있는 방법에 대해 설명했습니다. RMI의 독특한 기능 중 일부에 대한 추가 게시물에 대한 계속 지켜봐 주시기 바랍니다! 그러나 Java 형식이 java.io.Serializable을 구현하는 한 RMI는 메서드 시그니처에 대한 전체 Java 사양을 지원합니다. 레지스트리가 1099이외의 포트에서 실행되는 경우 서버 및 클라이언트 클래스의 LocateRegistry.getRegistry 호출에서 포트 번호를 지정해야 합니다. 예를 들어 이 예제에서 레지스트리가 포트 2001에서 실행되는 경우 서버에서 getRegistry에 대한 호출은 다음과 같은 것입니다. 클라이언트 응용 프로그램에는 원격 인터페이스와 클라이언트 응용 프로그램인 두 개의 파일만 필요합니다. rmi 응용 프로그램에서 클라이언트와 서버는 모두 원격 인터페이스와 상호 작용합니다.

클라이언트 응용 프로그램은 프록시 개체에서 메서드를 호출하고 RMI는 원격 JVM에 요청을 보냅니다. 반환 값은 프록시 개체로 다시 전송된 다음 클라이언트 응용 프로그램으로 전송됩니다.