Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > JSP отправка сообщения о выполнении задачи


Автор: Shall 24.2.2012, 15:39
Здравствуйте уважаемые гуру!

В общем суть проблемы такая: Есть JSP/Servlet сайт, расположенный у меня на localhost, на нем регистрируются пользователи и создают списки событий, у которых указано время их выполнения. Нужно сделать так, чтобы при наступлении события на почту пользователя было отправлено сообщение о выполнении события.

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

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

Нашел такую штуку ServletContextListener, может через неё? Если да, то подскажите как с ней работать  smile 

Использую NetBeans + Tomcat (все последних версий)

Автор: danilych 24.2.2012, 16:07
для этих целей лучше использовать quartz - http://quartz-scheduler.org/

Автор: Shall 24.2.2012, 16:13
Цитата(danilych @ 24.2.2012,  16:07)
для этих целей лучше использовать quartz - http://quartz-scheduler.org/

Кварц, насколько я знаю это класс в духе TaskSchedullera, а мне нужно понять, как запустить на сервере, в фоновом режиме какую-нибудь функцию, которая что-нибудь бы выполняла, без запроса клиента. А все остальное потом прикручу.

Автор: COVD 24.2.2012, 18:21
Вам надо, чтобы при старте вашего веб-приложения стартовал поток ( или таймер ). Для этого надо создать класс, имплементирующий javax.servlet.ServletContextListener, и указать его в web.xml.  В Нетбинсе для этого можно открыть web.xml и в секции General->Web Application Listeners добавить полное название класса. При старте приложения в обьекте класса сработает метод  contextInitialized, на выходе - contextDestroyed. В первом случае вы запускаете поток или таймер,  во втором - останавливаете.

Автор: Shall 24.2.2012, 19:57
Цитата(COVD @ 24.2.2012,  18:21)
Вам надо, чтобы при старте вашего веб-приложения стартовал поток ( или таймер ). Для этого надо создать класс, имплементирующий javax.servlet.ServletContextListener, и указать его в web.xml.  В Нетбинсе для этого можно открыть web.xml и в секции General->Web Application Listeners добавить полное название класса. При старте приложения в обьекте класса сработает метод  contextInitialized, на выходе - contextDestroyed. В первом случае вы запускаете поток или таймер,  во втором - останавливаете.

Спасибо, значит буду копать в сторону ServletContextListener smile А данный класс будет работать именно при старте сервера, т.е. не будет зависеть от того, зашел пользователь на сайт или нет?

Автор: COVD 24.2.2012, 21:48
Цитата

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

именно при старте 

Автор: Molodec 3.3.2012, 14:50
Спасибо. Мне тоже будет полезно. 

Автор: COVD 3.3.2012, 18:23
именно при старте приложения. Старт приложения - это вы кладете war в папку webapps. Остановка приложения - удаляете war из папки webapps. Сам сервер может при этом продолжать работать. Разумеется, это также работает, если вы стартуете или останавливаете сам сервер. Например, когда IDE запускает или останавливает веб-сервер при запуске или остановке веб-приложения.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)