RMI-2

  • 12
  • Недоступна
Реализуй логику метода run в SERVER_THREAD. В нем будет имитироваться серверная часть: 1) Инициализируй поле registry, которое будет принимать и обрабатывать запросы на 2099 порту. 2) Создай два объекта - Cat и Dog. 3) Используй класс UnicastRemoteObject, чтобы создать Remote объекты для созданных C
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (61)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Виталий30 уровень, Санкт-Петербург
10 октября, 09:25
У меня при запуске выводит AlreadyBoundException, потом имя кота с мяу, потом прога виснет , до собаки дело даже не доходит. Валик принял😳
Андрей Вайно24 уровень, Tallinn
6 ноября, 11:38
Насколько я понимаю, здесь нужно на каждый обжект создать свой Бинд. нейм. и на каждый будет свой ремоут. Далее оба ремоута добавляем в регистр. На стороне клиента просто проходим по листу биндов и юзаем каждый внесённый в регистр.
Володимир Штаба38 уровень, Киев
23 сентября, 21:01
5 пункт не стройте велосипед заново ...
catch (RemoteException | AlreadyBoundException e) {
                e.printStackTrace();
            }
Ошибки по умолчанию выводяться в System.err
Ivan34 уровень, Нижний Новгород
30 октября, 08:46
ну e.printStackTrace(System.err); позволяет вспомнить недавние лекции про PrintStream, так что ничего плохого в ковырянии нет)
Vlad Tagunkov38 уровень, Praha
15 сентября, 11:07
регистер уже создан в самом верху. надо registry = LocateRegistry вместо Register registry = LocateRegistry потерял на этом кучу попыток не понимая почему не проходит первый пункт валидации
Constantine36 уровень, Москва
20 июля, 11:31
Объявлять животных надо перед try, инициировать в try.
Dmitry Potamoshnev33 уровень, Москва
22 июля, 12:42
0_o мдаааа та же беда была.
Ярослав Воробець37 уровень, Львов
7 августа, 19:41
Об'являв і ініціалізував в try, пройшло
Tom Riddle35 уровень, Москва
2 сентября, 10:58
У меня все было внутри try/catch и никаких вопросов не вызвало.
Даниил41 уровень
17 июля, 15:52
Кто скажет, почему при создании заглушек указав одинаковый порт (не знаю зачем он)
Remote stubDog = UnicastRemoteObject.exportObject(dog, 0);
Remote stubCat = UnicastRemoteObject.exportObject(cat, 0);
всё работает исправно? И что это за порты? В этом задании тоже программа сама не хочет завершаться сама. Даже если установить оба потока демонами...
Tom Riddle35 уровень, Москва
2 сентября, 11:02
Потому что если порт 0, то регистр сам выберет свободный порт. Т.е. Фактически они будут работать на разных портах. Программа не хочет завершаться сама, потому, что RMI методы при записи в регистр фактически запускают новые потоки, которые работают в фоне. Потоки не демоны, поэтому будут крутиться пока их не остановят. Чтобы их остановить надо вызвать метод registry.unbind("тут название сервиса");
Дмитрий Войтенко31 уровень, Харьков
17 апреля, 09:30
Долго не мог понять почему выбрасывает ошибку о повторном использовании порта 2099. Оказалось надо принудительно было завершить выполнение предыдущей задачи. Короче час потраченного времени.
Вагиф29 уровень, Санкт-Петербург
11 марта, 12:51
тот кто мучается с 5 пунктом и меняет разный типы Exception и ничего не помогает, тогда просто обратите внимание на создать Remote объекты, если вы его создали то сразу и добавь в registry, т.е. создаете Remote объекты для Cat и тут же добавляете их в registry следующей строчкой, то же самое для Dog. 9 попыток потратил пока этого не понял (
skybright38 уровень
13 августа, 19:10
Просто перенес создание животных в try, оставил их подряд, потом занес их в registry. За идею, спасибо
Егор26 уровень
28 августа, 19:47
а есть ответ почему оно так работает?
Сергей36 уровень, Москва
21 августа 2018, 10:52
опять эта ошибка с таблицей
java.rmi.NoSuchObjectException: no such object in table
пока не добавил в конце нити сервера немного сна
Thread.sleep(10);
Почему она лезет, вроде main спит перед запуском клиента?
Aleksandr35 уровень
4 января, 16:48
Спасибо за подсказку, но тоже не пойму, почему столь малая задержка решила проблемму, если перед запуском нити клиента итак задержка стоит в 1000 мс
Artur41 уровень
5 марта, 17:37
мне Thread.sleep(10) в конце нити не помогло, в main после старта серверной нити написал join SERVER_THREAD.join() - так стало работать.
Knastnt36 уровень
29 июля, 06:18
RMI: no such object in table "Победил прописал сервис, как статик ... Иначе сборщик мусора весело подчищает интерфейс"! Как так?! Вот это новости!!!
24 мая 2018, 12:07
Ребят, если кого-то введет в заблуждение требование "При возникновении любого исключения выведи его стек-трейс в поток System.err." То не мудрствуйте лукаво - это один обычный блок
catch (Exception e) {
     e.printStackTrace();
}
И ВСЁ!
Alex Shamray35 уровень
9 августа 2018, 20:24
Только с этим "одним единственным" я продолбался минут 30. Причина оказалась вовсе не в нем, а в том, что создание объектов было выше блока try-catch. Матюки валика были обосноваными)))
Rodriguez33 уровень
6 января, 02:32
Причина оказалась вовсе не в нем, а в том, что создание объектов было выше блока try-catch. Спасибо, добрый человек. -3 попытки из за этого. Тоже создавал объекты выше блока try.
S3R3N1TY37 уровень, Санкт-Петербург
9 апреля, 10:03
А почему нельзя создать обьекты выше блока try-catch ? Какие там могут возникнуть ошибки
Oleg Fedoruk35 уровень
1 мая, 18:21
у меня кстати было 2 блока
} catch (RemoteException e) {
           e.printStackTrace(System.err);
} catch (AlreadyBoundException e) {
           e.printStackTrace(System.err);
}
прошло без вопросов
Antony.Glim36 уровень, Санкт-Петербург
6 июня, 09:32
Помогло. Спасибо!
Ярослав Воробець37 уровень, Львов
7 августа, 19:37
catch (Exception e){
e.printStackTrace(System.err);
}
Maxim33 уровень, Москва
понедельник, 14:05
Думаю за такой обобщенный лов исключений на работе оторвут руки.
Роман25 уровень, Новосибирск
10 мая 2018, 16:31
Не лоханитесь как я: registry уже создан статиком, его просто надо инициализировать
vinsler35 уровень, Санкт-Петербург
21 мая 2018, 23:20
а как ты предыдущую задачу решал? ))))
Роман25 уровень, Новосибирск
23 мая 2018, 10:44
там было "из registry получи сервис бла бла бла" а в этой меня смутило "инициализируй" :) вот и перемудрил