![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Rusico |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
Всем привет! Пишу RMI приложение, в локалке всё работает отлично, клиент соединяется с сервером, выполняются удалённые методы, работает callback, но стоит мне подсоединиться к серверу через внешний IP, то начинаются проблемы с обратными вызовами.
Симптоматика: клиент на ура подсоединяется к серверу, но когда я пытаюсь передать на сервер Remote-объект для обратного вызова, то происходит ошибка: RemoteException occurred in server thread; nested exception is: java.rmi.ConnectException: Connection refused to host: 127.0.1.1; nested exception is: java.net.ConnectException: Connection refused Причём происходит это вот здесь:
Именно когда я передаю серверу свой объект clientServer, предназначенный для вызова его методов с сервера. Другие методы сервера вызываются без проблем и возвращают ответ. Откуда берётся мой локальный IP??? Объясните что проиcходит, может кто сталкивался с таким? |
|||
|
||||
| jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 2 Всего: 75 |
Уберите
-------------------- Opinions are like assholes — everybody has one |
|||
|
||||
| Rusico |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
Спасибо, но проблема не исчезла, та же ошибка( У меня появилась мысль - у меня на компе три интерфейса : lo, eth0 b wlan0 - Внешний IP на wlan0 а берётся именно
lo c 127.0.0.1 Может проблема в этом? |
|||
|
||||
| jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 2 Всего: 75 |
Насколько я знаю ничего в RMI не использует автоматом Вашего IP.
Как определяются host и post вот тут
? -------------------- Opinions are like assholes — everybody has one |
|||
|
||||
| Rusico |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
из настроек, из файлика
Добавлено через 1 минуту и 31 секунду конечный результат - rmi://195.90.155.26:5557/Division |
|||
|
||||
| Farmazon |
|
|||
![]() Разработчик ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 7.7.2006 Репутация: нет Всего: 5 |
знакомая хрень, если я не путаю ничего
пропиши в hosts.conf сопоставление имени компа и внешнего IP... Вдруг поможет... -------------------- Таково моё общее мнение. |
|||
|
||||
| Stolzen |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1041 Регистрация: 17.10.2005 Репутация: нет Всего: 48 |
На сервере. Должно помочь. |
|||
|
||||
| Rusico |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
Спасибо всем за помощь. Мне удалось выясни вот что: 1 - для того что бы в моём случае всё правильно работало не должно быть никаких firewall-ов, т. е. IP клиента должен быть внешним. 2 - обидно, но если стоит firewall, как у меня, то RMI использует HTTP-туннелирование, что сильно замедляет работу и исключает использование обратных вызовов(( вот такая вот беда.
Добавлено через 2 минуты и 2 секунды причём открытие портов может помочь только для ускорения работы, но обратные вызовы увы не работают. |
|||
|
||||
| Stolzen |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1041 Регистрация: 17.10.2005 Репутация: нет Всего: 48 |
Тогда нужно к задаче архитектурно подойти иначе - без обратных вызовов.
И еще для передачи вызовов поверх файрвола можно использовать RPC через HTTP - Hessian/Burlap или спринговский RPC. |
|||
|
||||
| Farmazon |
|
|||
![]() Разработчик ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 7.7.2006 Репутация: нет Всего: 5 |
что за спринговский RPC?
-------------------- Таково моё общее мнение. |
|||
|
||||
| Stolzen |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1041 Регистрация: 17.10.2005 Репутация: нет Всего: 48 |
Spring HTTP Invoker.
Цитата из Spring In Action, 2nd edition (страница 224):
Это сообщение отредактировал(а) Stolzen - 3.10.2011, 08:53 |
|||
|
||||
| Farmazon |
|
|||
![]() Разработчик ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 7.7.2006 Репутация: нет Всего: 5 |
так то - адаптеры, но нету же там своего протокола удалённых вызовов. Спринг - это клей...
-------------------- Таково моё общее мнение. |
|||
|
||||
| Rusico |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 144 Регистрация: 17.5.2004 Репутация: нет Всего: нет |
Решил всё таки написать как я решил эту проблему) Обратные вызовы RMI заменил на обычные сокетные соединения и передаю сериализованные объекты клиенту. Мои удалённые объекты умеют генерировать события и в случае возможности cakkback-ов листенерами у них являются удалённые объекты клиента, а в случае невозможности, листенерами являются серверные объекты у которых есть сокетное соединение со слушателем клиента и в обоих случаях передаются сериализованные события.
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |