그들이 어디에서 온 문제가 발생 바이올린 RMI에서 오늘, 클라이언트는 항상 매우 이상하다 액세스가 거부 문제인 IP 주소를 보여? 조사가 IP 주소의 IP 주소가 가상 네트워크 어댑터 가상 머신 것을 발견 한 후 서버 IP 주소 IP를보고 클라이언트가 자동으로 가상 머신에 매핑 할 이유 나중에 알고하지 않습니다. 이 솔루션은 가상 네트워크 어댑터 떨어져 처음으로 다음 서버 RMI가 제대로 연결됩니다 다시 시작합니다. (추신 : 가상 카드가 열립니다 재부팅 한 후, 각 A 상에 영향을주지 않습니다).
개인의 추측은 서버 등록 서비스는 자동으로 IP 주소를 선택할 때, IP 주소 오류가 선택에 발생한 것입니다. 나는 자바 소스 코드의 조각을 찾을 수 없습니다. 동생을 도울 수 아래의 소스는 그것을 대답했다. . .
서버 :
수입 java.rmi.Naming의; 수입 java.rmi.RemoteException을; 수입 java.rmi.registry.LocateRegistry; 수입 java.rmi.registry.Registry의; 공공 클래스 에는 RegistryService { 공공 정적 무효 메인 (문자열 []에 args) { 시도 { 레지스트리 레지스트리 = (8848 LocateRegistry.createRegistry를 ); 헬로 HellowRegistryFacade = 새로운 HellowRegistryFacadeImpl (); registry.rebind ( "HellowRgistry" , 안녕하세요); 에서 System.out.println ( "==启动RMI服务成功!"); } 캐치 (RemoteException을 전자) { e.printStackTrace (); } } }
클라이언트 :
수입 해 java.rmi.NotBoundException; 수입 java.rmi.RemoteException을; 수입 java.rmi.registry.LocateRegistry; 수입 java.rmi.registry.Registry의; 공용 클래스 RegistryClient { 공공 정적 무효 메인 (문자열 []에 args) { 레지스트리 레지스트리 = 널 ; 시도 { 레지스트리 = LocateRegistry.getRegistry ( "192.168.1.3을", 8848 ); HellowRegistryFacade 헬로 = (HellowRegistryFacade) registry.lookup ( "HellowRgistry" ); 문자열 반응 = hello.helloWorld ( "朋友"); 에서 System.out.println (대응); } 캐치 (RemoteException을 전자) { e.printStackTrace (); } 캐치 (가지는 NotBoundException 전자) { e.printStackTrace (); } } }
인터페이스
가져 오기 는 java.rmi.Remote; 수입 java.rmi.RemoteException을; 공용 인터페이스 HellowRegistryFacade은 확장 {원격 문자열 인 helloWorld (문자열 이름) 가 발생 RemoteException을; }
인터페이스
수입 java.rmi.RemoteException을; 수입 java.rmi.server.UnicastRemoteObject; 공공 클래스 HellowRegistryFacadeImpl이 확장 UnicastRemoteObject의이 구현 HellowRegistryFacade을 { 개인 정적 최종 오래 serialVersionUID의 = 1L ; 보호 HellowRegistryFacadeImpl ()가 발생 RemoteException을을 { } @Override 공공 문자열 인 helloWorld (문자열 이름) 가 발생 RemoteException을 { 반환 "[레지스트리]你好!"+ 이름; } }