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


Автор: Andrey1 5.10.2010, 12:42
Требуется реализовать фоновое выполнение заданий и веб-приложение (независимо).
Поможет ли в этом Spring (для описание и организации взаимодействия)?

Автор: Egik2 5.10.2010, 12:55
Посмотри например сюда:

http://static.springsource.org/spring/docs/1.2.9/reference/scheduling.html

Примеры для настройки заданий в Spring.

Автор: Vasay 5.10.2010, 13:30
Цитата(Andrey1 @  5.10.2010,  12:42 Найти цитируемый пост)
Требуется реализовать фоновое выполнение заданий и веб-приложение (независимо).Поможет ли в этом Spring (для описание и организации взаимодействия)?



только ради этого Spring не нужен.

Если нужен постоянно работающий фоновый процесс, то можно написать простое SE приложение и запускать параллельно томкэту (или что у Вас там?)

Если нужно выполнение по таймеру: посмотрите в сторону http://www.quartz-scheduler.org/

Правда, не совсем понятно, что вы имели ввиду: 
Цитата

Требуется реализовать фоновое выполнение заданий и веб-приложение (независимо)


Цитата

для описание и организации взаимодействия)


На каком уровне нужно взаимодействие ?

Автор: Andrey1 5.10.2010, 15:28
Цитата(Vasay @  5.10.2010,  13:30 Найти цитируемый пост)
только ради этого Spring не нужен.

Spring уже есть smile. Текущее веб-приложение уже его использует.

Цитата(Vasay @  5.10.2010,  13:30 Найти цитируемый пост)
Если нужен постоянно работающий фоновый процесс, то можно написать простое SE приложение и запускать параллельно томкэту (или что у Вас там?)

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

Цитата(Vasay @  5.10.2010,  13:30 Найти цитируемый пост)
Правда, не совсем понятно, что вы имели ввиду: 

Цитата

Требуется реализовать фоновое выполнение заданий и веб-приложение (независимо)


Если веб-интерфейс перегружается, это не должно влиять на фоновые процессы и наоборот.

Цитата(Vasay @  5.10.2010,  13:30 Найти цитируемый пост)
На каком уровне нужно взаимодействие ?

Нужен либо простой обмен данными или событийная модель (веб-приложение может подписываться на некие события).

Автор: Egik2 5.10.2010, 15:31
Цитата(Andrey1 @  5.10.2010,  15:28 Найти цитируемый пост)
Если веб-интерфейс перегружается, это не должно влиять на фоновые процессы и наоборот.

что под этим понимается? Перезагрузка полностью приложения например через tomcat manager?

Автор: Andrey1 5.10.2010, 21:59
Цитата(Egik2 @  5.10.2010,  15:31 Найти цитируемый пост)
что под этим понимается? Перезагрузка полностью приложения например через tomcat manager? 

да

Автор: Egik2 5.10.2010, 22:03
Если так, то соответственно реализовывать задания в веб приложении никак не получится, ведь если перегпужаем приложение, то соответственно и задания не работают

Автор: Andrey1 5.10.2010, 22:12
Цитата(Egik2 @  5.10.2010,  22:03 Найти цитируемый пост)
Если так, то соответственно реализовывать задания в веб приложении никак не получится, ведь если перегпужаем приложение, то соответственно и задания не работают

да, поэтому все задания должны обрабатываться в отдельном приложении

Автор: Vasay 5.10.2010, 22:18
Цитата(Andrey1 @  5.10.2010,  15:28 Найти цитируемый пост)
Да, сейчас фоновый процесс через SE приложение и фунциклирует (и обмен данными идет через базу). Но есть стойкое чувство, что это как-то криво и есть более красивое решение. Можно перенести фоновый процесс на томкет (или куда там еще ) и наладить  взаимодействие с ним (нужна событийная модель, общий доступ к объектам или что-то вроде этого).



Наверно, тут зависит от задачи. 

Как варианты:
Создать web службы на базе Вашего web приложения, которая бы пинговалась SE демоном. 
Посмотреть в сторону EJB. (т.е. есть создать EJB, которые совместно бы использовались бы из WEB приложения и SE приложения)

ИМХО - демон все же должен быть отдельным SE приложением.

Автор: Andrey1 6.10.2010, 12:50
Цитата(Vasay @  5.10.2010,  22:18 Найти цитируемый пост)
ИМХО - демон все же должен быть отдельным SE приложением.

Почему?

Чем отдельное приложение на сервере (аля ejb) отличается от SE приложения?

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

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

Я смотрю в сторону Quartz http://www.quartz-scheduler.org/overview/features.html , может быть там уже есть нужный функционал и архитектура.

Если того, что нужно, там нет (или есть, но это все окажется слишком сложным), тогда таки придется цеплять фоновые процессы к веб-интерфейсу (хочется как лучше, получается, как всегда smile). 

Автор: Vasay 6.10.2010, 13:02
Цитата(Andrey1 @  6.10.2010,  12:50 Найти цитируемый пост)
Почему?



Потому что какие либо касяки с SE приложением не повлияют на доступность вашего сайта/web-сервиса.

Потому что за некоторыми серверами прилоржений/сервлет контейнерами замечена особенность - падать при частом редеплое.

Потому что на сервере приложений/сервлет контейнере не рекомендуется использовать многопоточность.

Автор: Andrey1 6.10.2010, 20:19
Цитата(Vasay @  6.10.2010,  13:02 Найти цитируемый пост)
Потому что какие либо касяки с SE приложением не повлияют на доступность вашего сайта/web-сервиса.


Для этого процессы можно перенести в отдельное (от веб-интерфейса) приложение. Не обязательно SE. 

Цитата(Vasay @  6.10.2010,  13:02 Найти цитируемый пост)
Потому что на сервере приложений/сервлет контейнере не рекомендуется использовать многопоточность.

Без многопоточности тут не обойтись все равно.

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