Может глаз замылился, ну не могу найти, что не так. В Идее работает. Валидатор все время пишет 1-й и последний пункты. наверное уже все варианты вывода Exception перепробовал
package com.javarush.task.task32.task3208;
import java.rmi.AlreadyBoundException;
import java.rmi.NotBoundException;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;
import java.util.ArrayList;
import java.util.List;
/*
RMI-2
*/
public class Solution {
public static Registry registry;
// public static final String DOG_BINDING_NAME = "dog.name";
//public static final String CAT_BINDING_NAME = "cat.name";
//pretend we start rmi client as CLIENT_THREAD thread
public static Thread CLIENT_THREAD = new Thread(new Runnable() {
@Override
public void run() {
try {
for (String bindingName : registry.list()) {
Animal service = (Animal) registry.lookup(bindingName);
service.printName();
service.say();
}
} catch (RemoteException e) {
e.printStackTrace();
} catch (NotBoundException e) {
e.printStackTrace();
}
}
});
//pretend we start rmi server as SERVER_THREAD thread
public static Thread SERVER_THREAD = new Thread(new Runnable() {
@Override
public void run() {
try {
registry = LocateRegistry.createRegistry(2099);
final Dog Drujok = new Dog("Drujok");
Remote stub1 = UnicastRemoteObject.exportObject(Drujok,0);
final Cat Vaska = new Cat("Vaska");
Remote stub2 = UnicastRemoteObject.exportObject(Vaska,0);
registry.bind("dog",stub1);
registry.bind("cat",stub2);
}catch /*(RemoteException e){e.printStackTrace(System.err);}
catch (AlreadyBoundException e){e.printStackTrace(System.err);}
catch */(Exception e){e.printStackTrace();}
}
});
public static void main(String[] args) throws InterruptedException {
//start rmi server thread
SERVER_THREAD.start();
Thread.sleep(2000);
//start client
CLIENT_THREAD.start();
}
}