| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Spring: можно ли создать Thread? |
| Автор: Andrey1 26.8.2009, 16:39 |
| Возник вопрос, если ли в Spring культурная поддержка Thread? Мне нужно, чтобы при создании сессии создавался Thread, который будет работать все время, пока сессия жива (например, это может быть сканер, который складывает новые данные в базу и информирует клиента, что есть новые данные). ЗЫ: Хотя, щас понимаю, что эти Thread"ы можно создавать поверх веб-фреймворка: в моем случае ZK-фреймворк что-то такое предлагает: http://docs.zkoss.org/wiki/Simple_and_Intuitive_Server_Push_with_a_Chat_Room_Example |
| Автор: MisterCleric 26.8.2009, 17:09 |
| Для таких задач есть стандарт: JMS. А в Spring есть такой модуль http://www.springsource.org/spring-integration, который базируется на ESB. Все, что тебе надо это выполнять асинхронные задачи по какому-то событию. |
| Автор: Andrey1 26.8.2009, 17:57 |
| Да, только события должны генерироваться внутри Thread"а... |
| Автор: MisterCleric 26.8.2009, 18:07 |
| В каком-то посте я тебе рассказывал о sessionScope-бинах, в методе инициализации которых ты можешь запустить какой-нибудь таймед-таск, который будет с какой-то периодичностью повторяться. Или Quarz-триггер. А тот уже будет ложить в какую-то очередь сообщение что бы ложить нужные тебе объекты в базу и в другую очередь складировать сообщения о том, что что-то новое появилось. Потом смотришь в сторону http://www.google.com.ua/search?q=comet+ajax и без участия пользователя показываешь изменения на странице. Задача интересная и, думаю, посильная. Будет очень красиво. Почему ты привязался к этим Thread"ам - не понятно... |
| Автор: MisterCleric 27.8.2009, 11:12 |
| Да, еще вспомнил такое. Есть у Spring такой классик AsyncTaskExecutor, типа удобный способ запустить задачу в отдельном потоке. Как-будто похоже на то, что ты спрашиваешь. Но где-то я читал, что не рекомендуется в J2EE-окружении запускать таким образом неконтролируемые контейнером потоки, и предлагается для решения асинхронных задач использовать JMS. |
| Автор: MisterCleric 27.8.2009, 17:54 | ||
Это уже проблемы контейнера. Даже тот таймер, который, че-то делает с определенной периодичностью живет в отдельном потоке, но его обслуживает контейнер. И еще такой интересный момент наблюдали с помощью JProfiler, что каждый HTTP-запрос порождает два потока, которые ложатся в пул. Вот и думай на своими потоками.... |