RMI 클라이언트가 서버에 연결할 수 없습니다, 서버 가상 머신 디스플레이의 IP 주소는 액세스가 거부

 

 

    그들이 어디에서 온 문제가 발생 바이올린 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을 {
         반환 "[레지스트리]你好!"+ 이름; 
    } 
}

 

추천

출처www.cnblogs.com/yanyange/p/11374183.html