|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
07.02.2010, 16:33 | #1 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Java RMI connection timed out
Привет.
Разбираюсь с RMI, пока вроде все шло гладко, но никак не получается установить соединение между клиентом и сервером. Сделал все как полагается. На сервере написал интерфейс, который наследует Remote, написал класс, который этот интерфейс реализует. Сделал заглушку. Запускаю сервер, сервер запускается нормально. Запускаю клиента - вроде все нормально, получаю заглушку серверного интерфейса, но при попытке вызвать метод сервера через заглушку получаю java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: java.net.ConnectException: Connection timed out: connect Код сервера Интерфейс Код:
Код:
Код:
Код:
Главный Код:
ПыСы: класс Report объявлен как Serializable если что. ПыПыСы: rmiregistry тоже запущен. Последний раз редактировалось MaTBeu; 07.02.2010 в 16:41. |
07.02.2010, 21:03 | #2 |
Новичок
Джуниор
Регистрация: 26.08.2008
Сообщений: 1,010
|
Выложите содержимое класса Naming.
Давно уже с RMI не работал, но явных ошибок не увидел. в принципе, можете сравнить последовательность действий с этим мануалом: http://javatalks.ru/ftopic8059.php
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими. |
07.02.2010, 22:09 | #3 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Класс Naming - это стандартный. java.rmi.Naming, он представляет собой rmi-реестр.
Подобных этому мануалов уже перечитал достаточно. У меня проблема либо с адресами, либо с сервером. Исключение я получаю при попытке вызвать удаленный метод, а не при попытке получить заглушку серверного интерфейса. Последний раз редактировалось MaTBeu; 07.02.2010 в 22:11. |
07.02.2010, 23:07 | #4 | |
Новичок
Джуниор
Регистрация: 26.08.2008
Сообщений: 1,010
|
Понимаю, но тот пример работающий, сам разворачивал его, когда RMI осваивал, плюс он очень короткий
Цитата:
Покопался в исходниках апи. Соединение может быть потеряно в нескольких случаях: 1. оно вообще не было установлено(зависимости в апи уводят в проприетарные либы, так что не известно как там реализовано, и используется ли проксинг интерфейсов.) 2. сбой на серваке, после установки соединения оно сразу падает - и при вызове метода интерфейса в клиенте, монитор объекта вызывает исключение. 3. сбой на серваке, попытка выполнения реализации интерфейса приводит к deadloop или иной, не явной, ошибке, как следствие сервер долго не отвечает - клиент считает что соединения утеряно. и еще, как бы глубоко я не лез, не смог найти место, где бы производился экспорт реализации интерфейса, только лишь передачу ссылок на него в глубину. К сожалению, времени на детальное изучение проблемы нету. Порекомендую вот что: при обучении не юзать облегчающие классы(тут это Naming) вообще(сокращаете код на 2-3 строчки, в итоге можете получить баги которые будете вылавливать дни), и примеры раскуривать в режиме от легкого к сложному.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими. |
|
07.02.2010, 23:35 | #5 | |||||
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Лог сервера Код:
Стек ошибок клиента Код:
ПыСы: rmiregistry запущен на 2000 порту если что. ПыПыСы: и еще - пробовал упрощать вызываемый метод, делал просто чтобы он возвращал строку - результата нет. Последний раз редактировалось MaTBeu; 07.02.2010 в 23:39. |
|||||
08.02.2010, 00:31 | #6 |
Новичок
Джуниор
Регистрация: 26.08.2008
Сообщений: 1,010
|
Не понял... вы запускаете сервер на 2000 порту, а биндитесь на 1099?
Удивлен... не знал что такое возможно в RMI - распределять интерфейсы по портам. На сколько я помню, там у интерфейса должен возвращаться или void или Object-объект. помню что были с этим косяки, а вот какие именно не помню.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими. |
08.02.2010, 16:39 | #7 | ||
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Нет, бинд происходит тоже на 2000 порту. Это я просто менял код, думая, что проблема в порту.
Цитата:
Цитата:
Кстати, сервер нормально регистрируется в реесте. Я написал небольшую программку, которая проверяет все объекты, зарегистрированные в реестре. Сервер там есть, а вот почему к нему не доходит соединение я не пойму. |
||
10.02.2010, 18:02 | #8 |
Новичок
Джуниор
Регистрация: 26.08.2008
Сообщений: 1,010
|
То что реестр можно запускать на любом порту и ежу понятно, я не знал что можно экспортировать объект на другой порт, отличный от порта реестра. как с текущим проектом разберусь и если будет время, покурю rmi по-глубже.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими. |
10.02.2010, 22:38 | #9 |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Нет смысла курить его больше. Проблема решена. Во всем виновата Windows 7. Она сильно тормозит работу как сервера так и клиента. И при подключении просто истекает таймаут ожидания подтверждения. Как увеличить таймаут я не знаю. К тому же я не думаю, что в Vista и Win 7 полноценно реализована поддержка RMI. Но я покопаю немного глубже и если что, отпишусь сюда.
Запустил на Win XP - все работает как надо. Если кому нужны исходники - мне в ЛС. |
11.02.2010, 06:12 | #10 |
Новичок
Джуниор
Регистрация: 26.08.2008
Сообщений: 1,010
|
Дак я для себя
По скольку проблема решена, тему закрываю. upd By MaTBeu Проблема решена. В win 7 нужно отключить службу базовой фильтрации. В Vista не пробовал, но там вообще стоит какая-то защита на сокетах, вылетает при создании сокета. Если что-то будет ясно с Vista, напишу сюда.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими. Последний раз редактировалось MaTBeu; 09.03.2010 в 13:03. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Remote Desktop Connection | BlincAttack | Общие вопросы .NET | 1 | 23.10.2009 00:05 |
connection closed gracefully_помогите! | JAy_D | Работа с сетью в Delphi | 11 | 17.10.2009 09:23 |
SocketError 10061. Connection refused | Lanist | Работа с сетью в Delphi | 11 | 17.07.2008 14:47 |
Connection timed out при вызове IdSMTP1.Connect(10000); | dimon000 | Работа с сетью в Delphi | 3 | 11.01.2008 22:49 |
Connection timed out - что это? | илья too | Работа с сетью в Delphi | 4 | 25.08.2007 19:07 |