이하의 네임 .lookup()를 사용하면, 리모트 메소드의 RMI 서비스 검증이 동작하지 않습니다. 어떤 오류도주지 않지만 원격 인터페이스 값을 반환하지는 않습니다.RMI의 네이밍 검색은 ClassNotFoundException에 의한 UnmarshalException를 슬로우한다
Registry reg;
String serverAddress = "xxxxx";
String serverPort = "xxxx";
String text = "x";
try {
reg= LocateRegistry.getRegistry(serverAddress, (new Integer(serverPort)).intValue());
final String regsitryList[] = registry.list();
// Remote r = registry.lookup("xservice") ;
if (Arrays.asList(regsitryList).contains("xservice")) {
Remote r = registry.lookup("xservice");
if(r!=null)
log.debug("found the service");
}
} catch (RemoteException re) {
re.printStackTrace();
}
그래서 * 돌려 주는가? 리모트 인터페이스에 캐스트 할 수 있습니까? – EJP
아니요. 서비스가 시작되어 실행 중이며 캡처 할 필요가 없는지 확인해야하기 때문에 반환하지 않습니다. – mahesh
그래서 반환하는 것이 무엇인지 모르는 경우 원격 인터페이스의 인스턴스가 아닌 것을 어떻게 알 수 있습니까? 당신의 질문은 무엇입니까? 그리고 왜 list()와 lookup()을 호출할까요? – EJP