![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| kashka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 29.11.2004 Где: Wolfenbuettel, Ge rmany Репутация: нет Всего: 1 |
Задача: саздание RMI-базированного коммуникацианного приложения, обмен как синхронный так и асинхронный.
Теперь проблемма: если один клиен шлет другому сообщение, как другой клиен узнает что у сервера есть сообшение для него? Должен он (клиент) постоянно сервер спрашивать: "есть у тебя новое сообшение для меня"? Или можно ето как нибудь по другому организовать? Что то типа еvent-а, вот только я не пойму как. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15719 Регистрация: 24.3.2004 Где: Dublin Репутация: 5 Всего: 538 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| kashka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 29.11.2004 Где: Wolfenbuettel, Ge rmany Репутация: нет Всего: 1 |
Я не совсем поняла 2-ое
Если я например сделаю так: клиент наследует от Remote. Все мои клиенты хранятся на сервере (вектор например), Если Клиент1 хочет послать сообщение Клиенту2, он вызывает метод сервера sendMessage(message, client2Name), может ли сервер (у него есть ссылки на клиентобьекты) вызвать метод клиента2, что нибудь типа: setMessage(message, client1.name)? Клиенты в registry не регестрируются. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15719 Регистрация: 24.3.2004 Где: Dublin Репутация: 5 Всего: 538 |
Со вторым способом будет так:
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| kashka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 29.11.2004 Где: Wolfenbuettel, Ge rmany Репутация: нет Всего: 1 |
Спасибо буду разбираться дальше
|
|||
|
||||
| Stampede |
|
|||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
kashka, такая задача в принципе решается. Идея в том, чтобы клиент тоже объявлял свой Remote интерфейс. Сервер при подключении очередного клиента заносит его в список для оповещения, и когда для кого-то есть новое сообщение, обращается к нему по его удаленному интерфейсу. Я такое делал, в пределах локальной сети работало нормально. Будет ли работать за пределами фаервола - не знаю, не уверен. Вот тут достаточно просто все описано, а вообще погуглюй по слову RMI callback. Успехов! -------------------- "If you want something done right, do it yourself" По секрету: выучить английский - реально! |
|||
|
||||
| kashka |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 29.11.2004 Где: Wolfenbuettel, Ge rmany Репутация: нет Всего: 1 |
спасибо, я тоже сейчас так делаю
Вот только я сейчас на одной машине пробую, вроде работает. Но ты прав насчет фаервола... ех... Добавлено @ 19:39 Спасибо за статью, действительно хорошо описанно. |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15719 Регистрация: 24.3.2004 Где: Dublin Репутация: 5 Всего: 538 |
Для этого они должны быть RMI серверами, а вроде было условие что без этого. Ну да это не самое главное. Если я ничего не путаю, то такая схема не будет работать если клиент сидит через NAT, т.к. там не разрешены входящие соединения. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| kashka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 29.11.2004 Где: Wolfenbuettel, Ge rmany Репутация: нет Всего: 1 |
RMI серверами они могут быть, самое главное что бы без регистрации.
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15719 Регистрация: 24.3.2004 Где: Dublin Репутация: 5 Всего: 538 |
А без регистрации в RMI-registry никто не увидит данный RMI сервер.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Stampede |
|
||||||
![]() Гносеолог ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 963 Регистрация: 25.4.2005 Где: Calgary, Alberta, Canada Репутация: 66 Всего: 144 |
Вот тут чувак предлагает библиотечку (особая реализация сокетов) специально для обеспечения прохождения RMI через стену. Заверяет, что поддерживаются callbacks (зависит от типа фаервола) и клиенты из NAT. Правда, еще говорит что-то про деньги, хоть и не очень внятно
Я так понимаю, речь идет о коммуникации клиентов не напрямую друг с другом, а через чатный сервер. А серверу никого искать не надо - кто к нему подключился, про того он и знает. Единственное, на клиенте нужно перед подключением выполнить такой код:
Это сообщение отредактировал(а) Stampede - 23.11.2005, 20:17 -------------------- "If you want something done right, do it yourself" По секрету: выучить английский - реально! |
||||||
|
|||||||
| парторг |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 18.9.2005 Репутация: нет Всего: нет |
как вариант можно поднять jetty с soap-сервером на нем %)
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |