![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| StormDK |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 5.4.2007 Репутация: нет Всего: нет |
Что такое RMI и как оно работает я представляю, но опыта разработок нет, поэтому вопрос:
- локальная сеть - на некоторых любых машинах ( например А, Б, С, Д) стоит удалённый серверный объект (на всех машынах один и тот же) - методы этого объекта и будем вызывать удалённо. - на некоторой любой машине стоит клиентское приложение - для начала клиентское приложение должно показать, что на машинах А, Б, С, Д нашей сети установлен наш удаленный объект и мы можем его пользовать с той машины, с которой нам нужно. ================================================ Как клиентское приложение узнает о всех удалённых объектах? ================================================ Как я понимаю, все эти удалённые объекты должны зарегестрироваться на определённой машине SpecMashina:
а клиент будет делать что-то типо
Возможно написал всё неправильно или не точно, но суть понятна. ( Тут ещё вопрос, как добиться уникальности имени обекта при регестрации) А можно как-нибудь развернуть это без SpecMashina - заранее обговоренного узла? Например: пройтись по всем IP адресам сети и попытаться получить ссылку на наш объек. При этом на каждой машине регистрация объекта будет происходить в свой локальный реестр. Это сообщение отредактировал(а) StormDK - 5.4.2007, 17:04 |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Никак, и клиент, и сервер, должны знать где находится RMI-registry. -------------------- 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. |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 2 Всего: 118 |
Теоретически можно сделать некий сервис (пусть даже в виде конфиг-файла где-то в инете или на файл-сервере), который будет давать клиентам хост - но вообщем-то это масло масленное.
Но LSD прав - указывать все равно надо. Разве что попробовать "пинговать" сервер - например договориться по поводу порта и гонять некий "пинг" по всем машинам. Но IMHO - не нудо этого - раз уж клиента установили - имя машины уж как-нибудь можно сделать. |
|||
|
||||
| StormDK |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 5.4.2007 Репутация: нет Всего: нет |
Ну а всё, что я понаписал-то выше - правильно? PS Ну а если каждая машина в своём локальном реестре зарегестрирует объект? А клиент будет стучать в rmi реестр каждой машины и пытаться получить ссылку на объект. Просто сеть-то локальная, компьютеров, впринципе, не много, можно просто все машины перебрать и постучаться в их локальный реестр - если ответили - вот и нашли наш объект. (Но конечно это как-то не эстетично). Т.е. Вы говорите, что все серверы должны делать так:
? А уникальность имён MainService я должен сам обрабатывать? Т.е. при каждой регестрации нового объекта нужно запросить полный список зарегестрированных объектов чтоб не повториться? Это сообщение отредактировал(а) StormDK - 5.4.2007, 17:38 |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Вообщем, да. По поводу поиска RMI-registry - можно послать широковещательный UDP пакет, на заранее оговоренный порт, а сервер должен будет ответить на него. Но это прокатит только в локалке.
Для уникальности можно использовать java.util.UUID. -------------------- 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. |
|||
|
||||
| StormDK |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 5.4.2007 Репутация: нет Всего: нет |
Ну, вообщем, я всё понял. Спасибо. Про широковещательную рассылку я уже думал ... По-мойму красивая идея )) Просто таким образом можно избавиться от единого центра (центрального RMI реестра) и тогда система получиться 100% свободной - куда хочу, туда и ставлю удалённый объект и клиент с любой машины сможет их все найти! Только: 1. Мы таким образом что-то типо смешаем разные уровни модели OSI в одном проекте - широковещательная рассылка - 2-й уровень - для получения ссылки на удалённый объект- это выше ))) - как-то не по академически ))) 2. это конечно зависит от задачи... но с общим реестром всё-таки проще реализовать это. Это сообщение отредактировал(а) StormDK - 5.4.2007, 17:58 |
||||
|
|||||
| COVD |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 11 Всего: 43 |
Да. У нас один компонент медленно работал. Полезли туда. А там что-то вроде findGlobalProvider каждый раз вызывается. Разработчик на все случаи жизни нетленку сделал. Как учили. |
||||
|
|||||
| StormDK |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 5.4.2007 Репутация: нет Всего: нет |
А объясните, пожалуйста, вот что:
Если получили мы ссылку на удалённый объект и вызвали его метод:
а метод method(); возвращает, например, String - то всё нормально работает, а если он должен возвратить экземпляр некого нашего класса - то имеем MarshallException. Т.е. вопрос: как сделать так, чтоб метод удалённого объекта мог возвращать экземпляр некого нашего класса? |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Класс олжен реализовывать интерфейс java.io.Serializable. -------------------- 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. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |