2017-03-05 3 views
0

다른 컴퓨터의 일부 메서드 호출을 포함하는 RMI 서비스를 만들었습니다. 서버 및 클라이언트가 유효한 IP 주소를 가지고 있고 클라이언트에서 프로그램을 실행하려고하면 connection refused 예외가 발생합니다.Java RMI에서 연결이 거부되었습니다.

IP 주소를 localhost로 변경하면 문제가 해결되지만 다른 IP 주소로 원격 연결을 시도하면 같은 오류가 발생합니다.

+0

[tag : websocket]은 아무 관계가 없습니다. – EJP

+0

@Micho 따옴표로 묶지 않은 텍스트에는 따옴표 서식을 사용하지 마십시오. – EJP

답변

-1

에 한번 사용이 전에 RMI

System.setProperty를 ("java.rmi.server.hostname", REGISTRY_HOST)를 등록;

여기서 REGISTRY_HOST는 IP 주소입니다. RMI의 '연결이 거부'세 경우가 있습니다

+0

'RMI 등록'에 앞서이 작업을 수행해야합니다. 레지스트리 호스트가 서버 호스트와 다른 경우 사용할 호스트가 잘못되었습니다. 서버 호스트를 사용해야합니다. 동일하다면 서버 호스트 IP를 사용해야합니다. – EJP

0

:

  1. bind()/rebind()/unbind()를 호출. 레지스트리는 사용중인 호스트 : 포트 또는 URL에서 시작되지 않습니다.
  2. lookup()으로 전화 할 경우. (1) 성공하면 잘못된 레지스트리를 조회하려고합니다. 레지스트리는 일반적으로 서버와 동일한 호스트에서 실행됩니다.
  3. 원격 메소드를 호출 할 때. 즉, 리모트 오브젝트를 반출하기 전에 서버 JVM에서 java.rmi.server.hostname을 설정해야합니다. 이유는 RMI FAQ 항목 A.1을 참조하십시오. 더 나은 해결 방법은 DNS 또는 hosts 파일을 수정하는 것입니다.
관련 문제