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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Организация нотификации пользователя 
V
    Опции темы
Luceus
Дата 28.1.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Всем добрый день!

Подскажите, пожалуйста, где копать, что бы можно было реализовать следующее. Необходимо, чтобы при выполнении какой-то операции на сервере, пользователю в браузер отправлялся XML с информацией о выполняемых тасках на сервере. Например, пользователь нажал создать объект. Сервлет принял эту информацию, и начал обрабатывать действие. И уведомляет об этом пользователя. Пользователь может выключить браузер, и запустить его позже, с продолжением получения информации о выполняемых работах. Как это реализовать?

Аналогично, другое. Пользователь вводит логин и пароль. Переходит на страницу чата. Тем временем на стороне сервера произошел коннект с чат-сервером, и постоянно поддерживается коннект. И лишь время от времени на странице пользователя происходит запрос о новых сообщениях, и если таковые имеются, возвращается XML.

Заранее спасибо.
PM MAIL WWW   Вверх
nornad
Дата 28.1.2008, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



В случае браузера инициатором является всегда клиент, так что только вариант, когда на клиенте регулярно вызывается некий метод, который спрашивает сервер, нет было ли чего интересного в последнее время.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Luceus
Дата 28.1.2008, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



nornad, согласен. Так а как сохранить на стороне сервера тоже соединение с сервером ICQ, что бы с определенной периодичностью можно было запрашивать данные о состоянии из браузера?? Я так понимаю, что после того, как тот же сервлет передает информацию клиенту, инстанс его освобождается.
PM MAIL WWW   Вверх
batigoal
Дата 28.1.2008, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



Цитата(Luceus @  28.1.2008,  18:24 Найти цитируемый пост)
Я так понимаю, что после того, как тот же сервлет передает информацию клиенту, инстанс его освобождается. 

Освобождается, конечно - ведь его цикл завершен. Но ничто не мешает запустить на сервере какой-то "вечный" класс (который отнюдь не обязан быть сервлетом) и из его недр удерживать открытые коннекты к асечному серверу.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Luceus
Дата 29.1.2008, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



batigoal, вот как раз я об этом smile Есть ли пример, как сделать подобный вечный класс, который бы занимался фоновой обработкой. И не только, напрмер, поддерживал связь с сервером, но также и производил какие-то запланированные работы. Спасибо.

 smile 
PM MAIL WWW   Вверх
batigoal
Дата 29.1.2008, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



Дык, а какой тут нужен пример? smile Класс с бесконечным циклом, начинающий свою работу при инициализации контекста приложения и завершающий при его убиении.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
Luceus
Дата 29.1.2008, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



batigoal, может я не корректно задал вопрос. Если это не сервлет, то каким образом его запускать в сервере приложений? Я только начинающий, и поэтому спрашиваю всякие глупости.

Спасибо.
PM MAIL WWW   Вверх
Stampede
Дата 29.1.2008, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

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



Цитата(Luceus @  29.1.2008,  03:43 Найти цитируемый пост)
Есть ли пример, как сделать подобный вечный класс, который бы занимался фоновой обработкой. И не только, напрмер, поддерживал связь с сервером, но также и производил какие-то запланированные работы. Спасибо.


Туь можно предложить примерно такую архитектуру.

Создаем в базе очередь сообщений, скажем,  вида (msg_id, msg_time, msg_user_id, msg_text). Заполняем какими-то данными. Например, пишем тестовый генератор, который добавляет по одному сообщению в минуту.

Теперь самое интересное: как это выдать юзеру. Довольно просто на самом деле. Юзер через XMLHttpRequest выдает запрос по адресу, скажем, /messages.do?uid=1234.

По этому запросу запускается сервлет, который и будет этим самым "вечным классом", как ты изволил выразиться. Его задача - выдать в выходной поток все юзерские сообщения, которые накопились к данному моменту, и после этого не закрывать поток, а ждать поступления новых собщений для данного юзера (эту часть можно реализовать через wait/notify). Таким образом сервлет будет висеть в памяти до тех пор, пока юзер не закончит сессию/закроет браузер.

Что касается прослушивания линии на стороне браузера, т. е. обработки поступающих сообщений в ответе XMLHttpRequest, то там не все так просто. Вот тут можно найти обсуждения варианта транспорта:Ну и гуголь в руки, разумеется smile


Это сообщение отредактировал(а) Stampede - 29.1.2008, 19:56


--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
Luceus
Дата 29.1.2008, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Всем спасибо. Я нашел решение. Необходимо при создании сервлета имплементировать интерфейс Runnable. Этим самым мы говорим, что сервлет будет работать в фоновом режиме. Если мы хотим, что бы этот скрипт запускался сразу, как только будет стартанут сервер, необходимо в web.xml прописать <load-on-startup/>

Вопрос снят. smile
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0734 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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