RMI 연결 응용 프로그램을 통해 두 개를 개발 중입니다. 의사 소통은 양방향이며 모든 것이 잘 돌아갈 때까지 윈도우에서 실행됩니다. 데비안에 jar 파일을 가져 가면 java.rmi.NoSuchObjectException
으로 연결이 실패합니다.
리눅스의 차이점과 그 차이점은 무엇입니까?Linux의 java.rmi.NoSuchObjectException
편집 : 내 코드 :
서버 측 :
static Registrator clientRegistrator = null; // static field, interface extending java.rmi.Remote
...
Registry rmiRegistry = LocateRegistry.createRegistry(RmiConstants.RMI_REGISTRY_PORT);
clientRegistrator = (Registrator) UnicastRemoteObject.exportObject(new RmiClientRegistrator(networkListeners), RmiConstants.RMI_REGISTRY_PORT); // RmiClientRegistrator implements Registrator interface
rmiRegistry.bind(RmiConstants.RMI_SERVER_MARK, clientRegistrator);
클라이언트 측 :
static Registrator serverRegistrator = null;
String rmiConnectionString = "rmi://localhost:" + RmiConstants.RMI_REGISTRY_PORT + "/" + RmiConstants.RMI_SERVER_MARK;
serverRegistrator = (Registrator) Naming.lookup(rmiConnectionString);
serverRegistrator.registerClient(dataReceiver); // fails here, with mentioned exception
이 실행 중이며 참조가 존재합니다. 즉, 하나의 응용 프로그램을 시작하고, 두 번째 응용 프로그램 인 immediatly를 localhost에서 시작합니다. 나는 정적 인 레퍼런스를 만들려고 노력할지도 모르지만, 존재하지 않는 레퍼런스는 문제가되지 않는다. – Kousalik
지금 나는 정적 레퍼런스를 항상보고있다. 조회는 참조를 찾았지만 즉시 메소드를 호출하면 실패합니다. – Kousalik
@Kousalik new()에 의해 작성된 원격 객체에 대한 참조입니까, exportObject()에 의해 반환 된 스텁에 대한 참조입니까? 그리고 별도의 레지스트리 또는 in-process 레지스트리를 사용하고 있습니까? 후자의 경우 정적 참조를 보유하고 있습니까? LocateRegistry(). createRegistry()에 의해 반환됩니다. – EJP