Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Синхронизация обновлений коллекции на клиенте. Стандартное решение в J2ЕЕ. 
:(
    Опции темы
COVD
Дата 2.8.2010, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



Как решается в J2ЕЕ следующая задача?

Клиентское приложение отображает постоянно обновляемую коллекцию данных с сервера. Например, это список сообшений участников чата. Каждое новое сообшение добавляется в конец списка. Клиентское приложение при первом обращении загружает весь список, а затем периодически запрашивает у сервера обновления. 

Очевидно, что сервер может каждому сообщению присваивать уникальный возрастающий ключ - автономер, например. И отсылать клиенту пару - номер и само сообщение. Клиент, в свою очередь, в запросе обновлений отправляет серверу номер последнего полученного им сообщения. Сервер вернет новые сообшения, номер которых превышает номер, имеющийся у клиента. Это гарантирует, что сообшения не будут потеряны при пересылке.

Какие стандартные способы реализации этого средствами J2ЕЕ?
PM MAIL   Вверх
eros2
Дата 2.8.2010, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 31.5.2010

Репутация: нет
Всего: нет



Посмотрите в сторону JMS.
PM MAIL WWW   Вверх
COVD
Дата 2.8.2010, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



Цитата

Посмотрите в сторону JMS.


Да, JMS гарантирует, что сообщения не будут потеряны - клиент подтверждает серверу каждое посланное сообщение. Но как синхронизируется начальное состояние (весь список) с потоком обновлений? Наверное надо все, и начальное состояние и обновления слать через JMS. А какие еще варианты? И мессажинг - это асинхронный способ коммуникации с постоянно соединенным клиентом. A eсли более простой вариант, синхронный, т.е. поллинг, последовательние запросы?
PM MAIL   Вверх
eros2
Дата 2.8.2010, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 31.5.2010

Репутация: нет
Всего: нет



Ну незнаю...

Я бы сделал наверное так - 
есть таблица с сообщениями и в таблице поле "сообщение прочитано (забрано?)". Клиент забирает непрочитанные (незабранные?) сообщения, выводит на экран и ставит признак "прочитано".
чтоб клиент не поллил постоянно - кидать ему jms-сообщение когда для него есть данные. 

Т.е. - jms-сообщение не несёт никакой инфы кроме уведомления о новых данных. Клиент просто забирает незабранные данные. И не нужно постоянно поллить, передавать новые ИДы и т.п.
PM MAIL WWW   Вверх
COVD
Дата 2.8.2010, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



Понятно, спасибо.
PM MAIL   Вверх
Vasay
Дата 2.8.2010, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 18
Всего: 73



COVD, 
Цитата

Например, это список сообшений участников чата.


Для чата удобно использовать comet (в GlassFish и Jetty  имееются comet сервера).


Обычно это используется с js клиентом, но наверняка можно и с более "толстыми" клиентами использовать.  

Это сообщение отредактировал(а) Vasay - 2.8.2010, 21:39


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
COVD
Дата 2.8.2010, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 4
Всего: 43



Цитата

Для чата удобно использовать comet

Спасибо за пример. Комет - это, на мой взгляд, попытка реализовать идеи мессажинг подручными средствами ( протокол HTTP и клиент на JS ). Как я уже выше предположил, возможность синхронизации начального состояния и последуюших обновлений в мессажинг системе обеспечивается отправкой начального состояния и последующих обновлений через  одно постоянное соединение. Наверное и в комет так же. 

A eще как обеспечивают синхронизацию?
Что предложил бы J2EE сертифицированный специалист? Мессажинг?

Это сообщение отредактировал(а) COVD - 2.8.2010, 22:35
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.1039 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.