자바에 대한 오라클의 RMI 자습서를 이해하려고하는데 몇 가지 질문이있었습니다. 참조 용 가이드가 여기에 연결되어자바 RMI - 오라클 자습서 이해
- 서버 번호 : http://docs.oracle.com/javase/tutorial/rmi/implementing.html
- 클라이언트 코드 : http://docs.oracle.com/javase/tutorial/rmi/client.html
1) 서버 예에서, 기본 함수의 마지막 행은 다음 System.out.println("ComputeEngine bound");
. 정상적인 실행은이 시점에서 main 함수가 종료되고 프로그램이 종료된다고 말합니다. 그러나 뭔가가 프로그램을 차단하고 있습니다. 누구든지 왜 서버가 실행될 때 프로그램 블록 (인쇄 된 컴퓨팅 엔진 바운드 이후에 종료하지 않고)을 차단하는지 알 수 있습니까?
2) 이전 질문과 관련하여 서버가 포트에서 수신 및 수신 대기중인 것 같습니다. 어떤 항구에서 듣고 있습니까? RMIRegistry는 서버가 수신하는 포트를 어떻게 알 수 있습니까?
3) 클라이언트가 계산은 rmiregistry에, 또는 서버 코드를 실행하는 시스템을 실행하는 컴퓨터에서 발생합니까,이 스텁에 executeTask
를 호출 다음() registry.lookup
를 사용하여 rmiregistry의에서 스텁을 얻을 때 내 다른 질문은? 즉, 스터브는 을 레지스트리에 있거나 서버의 main
함수 내에있는 computeEngine
인스턴스에서 실행하도록 RMIRegistry에 알 립니까?
감사! 그게 도움이. – user1413793
다음과 같이 추가하십시오. "RMIRegistry는 서버가 수신하는 포트를 어떻게 알 수 있습니까?" 스텁에 내장되어 있습니다. 그러나 레지스트리 JVM에서 RMI 런타임 시스템에 의해 수행되는 DGC 용도로만 알면됩니다. 레지스트리 자체는 포트를 전혀 알 필요가 없습니다. – EJP
지정하는 포트를 지정합니다. 지정하지 않으면 0을 지정합니다. OS는 범위가 아닌 임의의 포트 자체를 제공합니다. – EJP