![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| unkis |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 802 Регистрация: 8.9.2004 Репутация: нет Всего: 1 |
У меня такая проблема. В институте профессор дал задания, написать приложение при помощи RMI, которое делала бы следующее:
Два приложения запускаются от 2 до n компьтерах и могут пользоватся одним canvas 2d для всех. Тоесть если один рисует что-то у себя, то остальные сразу видять что он рисует, а также одновременно могут рисовать несколько пользователей. ну это что-то типо общего удаллённого Paint приложения в messenger. Так вот у кого какие предложения для реализации такой проблемы? Я так понимаю что серверная и клинтская часть должна находится у каждого пользователя, но я пока не силён в RMI и поэтому могу ошибаться. Зарания благодарен. -------------------- www.unkis.com |
|||
|
||||
| 3x3 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 17.9.2006 Репутация: 5 Всего: 8 |
Один сервер держит массив, соотв. пикселам канваса, экспортирует:
- метод который позволяет установить цвет для каждого пиксела - метод который получить массив или его измененную с некоего момента (последнего запроса) часть. Клиенты по таймеру (0.3 сек., напр.) дергают сервер на предмет обновлений, а если юзер чего рисует - апдейтят массив на сервере вызывая первый метод. Можно даже под AJAX такого клиента сделать. -------------------- Зачем платить больше, когда можно заплатить дважды? |
|||
|
||||
| unkis |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 802 Регистрация: 8.9.2004 Репутация: нет Всего: 1 |
такой вариант рассматривается, а нелзя как-нибудь что бы не клиенты дёргали сервер, а сервер дёргал клиентов когда есть обновления, таким оброзом добится снижения трафика и нагрузки на сервер.
Добавлено @ 16:43 хотя тогда будет проблемма с файрволом -------------------- www.unkis.com |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 5 Всего: 538 |
В RMI всегда есть клиент и сервер и клиент вызывает методы сервера. В принципе каждый клиент может реализовать у себя и клиентскую и серверную часть. Но тут встанет вопрос, с тем где должна быть запущена 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. |
|||
|
||||
| unkis |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 802 Регистрация: 8.9.2004 Репутация: нет Всего: 1 |
Неужели icq и ему подобные клиенты постороины так что они каждое n времени дёргают сервер?
я думал что для сервера это не есть хорошо. -------------------- www.unkis.com |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 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. |
|||
|
||||
| 3x3 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 17.9.2006 Репутация: 5 Всего: 8 |
Для курсовика - имхо это уже перебор. -------------------- Зачем платить больше, когда можно заплатить дважды? |
|||
|
||||
| 3x3 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 17.9.2006 Репутация: 5 Всего: 8 |
Вот именно. Насколько я помню ВУЗ, то если твоя приблуда работает и делает то, что надо - это пять автоматом. Если не работает - ну там уже идея оценивается и попытка её реализации, тоже может быть хорошая оценка, но уже придётся помучаться. Плюс к тому, как правило окружение, где будет тестироваться твой софт - недружественное, чем ты кондовее сделаешь - тем лучше. Прога должна работать в любых условиях. Это чисто житейский совет, проверенный практикой. Например мы сдавали однажды курсовик по базам, сделанный на клиппере, и при этом так получилось, что этот курсовик я для 2/3 группы клепал.. На скорую руку, но так, что бы не попалить народ, что-б по-разному было сделано в некоторых специфических местах, по которым рука чувствуется. Ну и между делом себе тоже курсовик кропал - с ЕГА-графикой, библами на ассемблере для поддержки мыши, с графическим интро - на работе у меня было ненапряжно, вот и решил воспользоваться случаем освоить эту странную среду. В результате чего получилось? Я своих вперёд пропустил, что бы не портить впечатления. Все прошли на автомате, я дождался пока выставят оценки и стартанул своё детище. Гы. Оно не запустилось.. Начал смотреть чо как, пока рылся уже преподшу стошнило и она свалила, а потом оказалось, что у них в конфигсисе (это под досом ещё происходило всё) стоит совершенно непотребное ограничение на количество одновременно открытых файлов. Стал править - раздел защищен от записи (не помню уже как защита называлась, но тогда это модная приблуда была - запускалась резидентно с загрузочного сектора и не давала править загрузочный диск). Короче защиту пришлось преодолеть. Запустил свой шедевр - работает. Пошёл нашел преподшу, показал. ОК, говорит, а в чём дело было? Ну говорю, пришлось вашу идиотскую защиту ломать что бы конфигсис править. На этом месте меня чуть не отчислили, а потом типа сжалились и четвёрку поставили (все остальные мои курсовики тупо проканали на пять Это сообщение отредактировал(а) 3x3 - 9.10.2006, 23:53 -------------------- Зачем платить больше, когда можно заплатить дважды? |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Почему же? ИМХО ничего сложного, к примеру, простое сообщение об изменении будет содержать: 1) координаты изменяемой точки. 2) её новый цвет. а если добавить еще радиус, то можно рисовать целыми кругами, центр которых в 1). Я бы в качестве модели такой системы предложил иметь 1 координирующий сервер который будет общаться с клиентами по средствами RMI Callback-ов. Т.е. клиенты регистрируются, предоставляют серваку объект для обратного вызова. Сервер в свою очередь дергает клиентов по необходимости. Это исключает постоянные запросы клиентов : "Были изменеия? А может всетаки были? А если еще раз проверить? ...." Это сообщение отредактировал(а) powerOn - 9.10.2006, 23:53 |
|||
|
||||
| unkis |
|
||||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 802 Регистрация: 8.9.2004 Репутация: нет Всего: 1 |
Нет, ребята это не на курсовик.
Профессор дал такое задания для тренировке, мол чтобы мы освоили азы RMI, а на экзамене он потом будет спрашивать, можно так сказать по этому проекту, но это всё лирика, вернёмся к вопросу. я начал с самого простого примера и сразу столкнулся с такой вот ошибкой
хотя ServerCanvasRemote_Stub.class лежит там где и все class лежат создавал я его вот такой командой rmic de.rmi.ServerCanvasRemote в чём проблема не могу понять? вот мой интерфейс
вот моя серверная часть
вот моя клиентская часть
Это сообщение отредактировал(а) unkis - 10.10.2006, 10:18 -------------------- www.unkis.com |
||||||||
|
|||||||||
| 3x3 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 261 Регистрация: 17.9.2006 Репутация: 5 Всего: 8 |
А серверная ли это часть или просто определение класса который может вызываться через сервер? -------------------- Зачем платить больше, когда можно заплатить дважды? |
|||
|
||||
| unkis |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 802 Регистрация: 8.9.2004 Репутация: нет Всего: 1 |
я несовсем понял вопрос, но этот класс я записываю в registry, поэтому он, насколько я понимаюи является сервером.
-------------------- www.unkis.com |
|||
|
||||
| LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 5 Всего: 538 |
В параметрах запуска укажи нечто похожее:
И создай файл SimpleRMI.policy
-------------------- 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. |
||||
|
|||||
| unkis |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 802 Регистрация: 8.9.2004 Репутация: нет Всего: 1 |
я конечно же попробую, но мне непонятно причём может быть это.
Даже в FAQ на этом форуме простой пример безвсяких там полисов. -------------------- www.unkis.com |
|||
|
||||
| unkis |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 802 Регистрация: 8.9.2004 Репутация: нет Всего: 1 |
заработало, но почему без polyce не работало?
и расшефруяте пожалуйста, что означает ета строчка.
Теперь дальше. для того чтоби клиент каждие 3 секунди спрашивал у сервера есть ли для ниго что-то, мне нужно бдет в отдельном треде делать что-то типо такого:
Ето правильний подход, или может есть идеи по лучше? Заранее благодарен. -------------------- www.unkis.com |
||||
|
|||||
![]()
|
| Правила форума "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. |