powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Tomcat, Web приложение и свои потоки
10 сообщений из 10, страница 1 из 1
Tomcat, Web приложение и свои потоки
    #38246496
Шаров Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу посоветоваться.

Нужно в WEb приложении создать объект-сервис-демон, который бы не зависимо от запросов клиента, периодически обрабатывал логику.

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

Сначала, я написал внешний сервис-демон, который периодически обращался к СУБД, получал и обрабатывал задания, а также принимал срочные вызовы через RMI сосок прямо из контроллера.
Минусы данного варианта - разные JRE у Web приложения и "Сервиса".

В следующей итерации, я поместил сервис внутрь Web приложения. Это был Thread внутри Web. Минусы -, я так и не понял как останавливать этот поток внутри Web сервиса (Tomcat), потом, некоторые ошибки приводили к остановке потока и для перезапуска приходилось пере стартовать всё Web приложение.

В третьей итерации я опять вынес сервис из Web приложения :).

И теперь наступила очередь 4-ой итерации и думаю как организовать этот сервис, внутри или снаружи Web приложения ?

Условия работы сервиса.

1) Сервис должен периодически, выполнять некие задания не зависимо от клиентских запросов.
2) Клиентские запросы могут "будить" сервис, чтобы обработать некое задание и периодически проверять обработан запрос или нет.
...
Рейтинг: 0 / 0
Tomcat, Web приложение и свои потоки
    #38246592
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Spring Scheduler
Quartz
Executors.newScheduledThreadPool

Запуск\Шатдаун привязать к ServletContextListener либо вручную, либо средствами самого фреймверка.
Если у вас Exception не обрабатывается и приводит к остановке scheduler-a, то это проблемы реализации.
...
Рейтинг: 0 / 0
Tomcat, Web приложение и свои потоки
    #38246607
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
главное, не забыть принять во внимание кое-что
...
Рейтинг: 0 / 0
Tomcat, Web приложение и свои потоки
    #38246609
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaглавное, не забыть принять во внимание кое-что
Это в полном JEE стеке. Если используется томкат, то вряд ли что-то ещё кроме сервлетов. Где менеджить ресурсы по потокам особо незачем.
...
Рейтинг: 0 / 0
Tomcat, Web приложение и свои потоки
    #38246620
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczchpashaглавное, не забыть принять во внимание кое-что
Это в полном JEE стеке. Если используется томкат, то вряд ли что-то ещё кроме сервлетов. Где менеджить ресурсы по потокам особо незачем.
ну у меня например в томкэте jndi на бд внутри спрингового шедулера не работало. без дальнейших телодвижений.
...
Рейтинг: 0 / 0
Tomcat, Web приложение и свои потоки
    #38246647
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
странно что не посоветовали jms, хотя и кварца по идее должно хватить с головой в принципе...
...
Рейтинг: 0 / 0
Tomcat, Web приложение и свои потоки
    #38246957
ТимоН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Tomcat, Web приложение и свои потоки
    #38246958
Dan Black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шаров Сергей , в некоторых веб-фреймворах (GAE, DropWizard, etc) сервисные демоны/вызовы - это обычные обработчики http-запросов, которые выполняются, если запрос, к примеру, происходит с определенного адреса (к примеру, 127.0.0.1) или по определенному порту. Поэтому на сервере достаточно будет настроить задачи в cron'е для генерации http-запросов по определенным URL'ам сервера и этого будет достаточно для решения многих задач.
Если же на сервере используется Spring, то уже всё есть из коробки - @Async, @Scheduled...
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Tomcat, Web приложение и свои потоки
    #38642424
Kail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chpasha,

У меня Spring, Hibernate.
Так вот не работает аннотация
Код: java
1.
@Scheduled(cron="0 0/1 * * * ?")

.
Причём когда запускаю из Spring Tool Suite (Eclipse), всё прекрасно работает.
Разворачиваю war файл на tomcat, неработает.

Подскажи может у тебя та же проблема была.
...
Рейтинг: 0 / 0
Tomcat, Web приложение и свои потоки
    #38642478
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я уже не помню, что у меня было, а что нет. на данный момент гарантированно рабочим является следующий конфиг
spring
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<task:annotation-driven executor="executor" scheduler="scheduler"/>

    <task:scheduler id="scheduler" pool-size="сколько надо"/>

    <jee:jndi-lookup id="workManager" jndi-name="timer/workManager"/>

    <bean id="executor" class="org.springframework.scheduling.commonj.WorkManagerTaskExecutor">
        <property name="workManager" ref="workManager"/>
    </bean>


tomcat
Код: xml
1.
2.
3.
4.
<Resource name="timer/workManager"
              auth="Container"
              type="commonj.work.WorkManager"
              factory="de.myfoo.commonj.work.FooWorkManagerFactory" /> 


в мавен (или так) нужны эти две либы
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
        <dependency>
            <groupId>com.bea.wlplatform</groupId>
            <artifactId>commonj-twm</artifactId>
            <version>актуальная</version>
        </dependency>
        <dependency>
            <groupId>de.myfoo.commonj</groupId>
            <artifactId>foo-commonj</artifactId>
            <version>актуальная</version>
        </dependency>


вот таким макаром нет никаких проблем ни с jndi-lookup из "своих" потоков (шедулера например) ни с чем бы то ни было еще.
disclaimer: это тот способ, который для меня первым заработал правильно во всех аспектах. не исключено, что существуют более элегантные/простые решения
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Tomcat, Web приложение и свои потоки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]