在下面使用naming.lookup()时,远程方法上的RMI服务验证不起作用。它不会给出任何错误,但不会返回远程接口值。但是,当搜索在该服务上运行的所有服务时能够找到
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();
}
答案 0 :(得分:0)
你声称没有发生的例外几乎肯定是由于ClassNotFoundException
提到了远程接口或存根,或者它们所依赖的类。当你调用list()
时,你只是转发字符串,而不是对象的类,所以没有例外。
list()
和lookup()
都会告诉您对象当前是否在注册表中绑定。这本身并不意味着对象仍然存在。您必须在其上执行远程方法才能知道;为此,你需要缺少的课程。