| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > как увязать не MVC приложение в Java EE |
| Автор: Walker 28.12.2013, 13:31 |
| Приветы! Задача простая - надо периодически брать данные из одного места и класть в другое. Какие данные и как часто брать - пользователь скажет (конфигом или через веб страницу пока без разницы). В принципе это был бы обычный системный сервис, но надо, чтобы запускалось под управлением Application сервера. То есть надо, чтобы сервер стартовал и каким-нибудь тредом запускал и мою аппликуху, которая живёт, пока он работает. Я структуру Java EE приложения только в виде квадратиков представляю. BD -> EJB -> JSP/JSF -> HTML. И есть у меня интуитивное чувство, что бизнес логика где-то в EJB жить должна, но как это так реализовать, чтобы к AS на манер полипа присосаться, - без понятия. Вопрос собственно заключается в том - чтобы на эту тему почитать (можно на международном). Знаю про официальный оракл Java EE 7 tutorial, но это на два-три месяца, начиная с JSF, а мне бы сразу ближе к делу. Спасибо за любые советы! |
| Автор: Walker 29.12.2013, 06:47 |
| Хорошо. Несколько перефразирую задачу. Как правильно написать программу, которая запускается в AS при его старте и хеллоувордит раз в минуту в лог на протяжении всего AS-овского жизненного цикла? Ну типа правильная точка входа и всё такое. (Где вот там метод Main должен быть. |
| Автор: Samotnik 29.12.2013, 14:42 |
| Если нужно простое и быстрое решение, я бы порекомендовал http://quartz-scheduler.org//B Идея: Пишется сервлет (это входная точка, метода main нет в веб прилагах), в нем определяешь кварц, который по расписанию будет дергать нужный метод. |
| Автор: Walker 29.12.2013, 15:59 |
| Ага, ну то есть сервлет-таки нормально заюзать для этих целей. За quartz Спасибо - заценим. Вопрос пока открыт на случай альтернативных интересных мнений. |
| Автор: Samotnik 29.12.2013, 20:59 |
| Walker, В Java Web всё сервлеты. Даже новомодные Spring controller'ы внутри сервлеты. Все зависит только от тебя, будет ли приложение дорабатываться, развиваться, дополняться, будет ли оно сложное или простое. Если в планах достаточно большое приложение, то рекомендую использовать Spring. Без него скучно, даже в какой-то степени сложнее. Но на это нужно много времени, что бы его изучить. Если все будет просто, то нет смысла его сюда тянуть. В нем, кстати, есть свой скедулер. |
| Автор: sergioK1 15.1.2014, 16:55 | ||||||
Walker, у меня реализовано так,
в web.xml прописываем
т.е. InitContextListener это entryPoint(main) вебовской апликации. ну естесно logger сконфигурируй, Samotnik, KISS зачем что-то стороннее? профит где? |
| Автор: Samotnik 18.1.2014, 22:56 |
| sergioK1, как-то не работал с этим скедулером, нужно подробнее изучить |
| Автор: jk1 21.1.2014, 21:40 | ||
Давай-ка подумаем, что умеет Quartz и не умеет старый добрый ScheduledExecutorService: 1. Quartz умеет привязывать выполнение к конкретному времени по часам, а не просто оперирует интервалами. В том числе позволяет выполнять задачи каждый третий четверг восьмого месяца в 3.15 утра. 2. Quartz умеет отслеживать ситуации, когда периодичность выполнения сбивается (например прошлое выполнение задачи заняло огромное количество времени, превысив даже интервал между запусками) и пытается выправить расписание, "нагоняя" график при дальнейших срабатываниях таймера. 3. Quartz умеет персистить джобы, позволяя переживать рестарты сервера не сбивая расписание выполнения задач. 4. Quartz умеет правильно работать в кластере, не дублируя выполнения задач. Кластеризация для современного AS - очень частый кейс. 5. Quartz умеет работать в контексте транзакций, в том числе распределенных. 6. Quartz предоставляет базовые средства для мониторинга и сбора статистики по выполнению задач. Выбирать реализацию, разумеется, надо исходя из потребностей конкретного приложения, которых мы пока не знаем. |
| Автор: sergioK1 21.1.2014, 22:08 | ||||
1)T,C, сказал что надо каждую минуту, drinking glass of milk caw doesn't require 2) Кварц это не быстрое решение, с ним надо разбираться , А в реальной жизни, когда аджал на 3 недели , времени с ним разбираться особо нет , 3) Ты с ним работал ? или прочитал на сайте какой он крутой |
| Автор: Magistrus 22.1.2014, 12:51 |
| если решишь связыватся с EJB то вот ссылочка http://docs.oracle.com/javaee/6/tutorial/doc/bnboy.html |
| Автор: jk1 22.1.2014, 15:20 | ||||
Если задача "разобраться с кварцем" занимает больше трех недель, то, конечно, использовать его не стоит. Квалификацию имеющихся разработчиков всегда стоит принимать во внимание при выборе фреймворков и библиотек. Мой первый опыт с кварцем дал работающий результат через час-два, просто потому что в гугле полно примеров + есть документация.
Сам я использую кварц уже порядка двух лет, в основном через спринг. Правда мне не очень понятно, как этот вопрос поможет топикстартеру решить его проблему. Чтобы избежать недопонимания: Я не пытаюсь объявить кварц панацеей. Мой пост описывает те фичи, которые в кварце есть по сравнению с ExecutorService'ом, отвечает на заданный ранее вопрос. Дальше ТС пусть сам смотрит, какие фичи больше подходят под его конкретную задачу. |
| Автор: sergioK1 22.1.2014, 19:23 | ||
Я думаю T.C. этого и хотел (увидеть несколько вариантов решения) , Про спринг не понял ?какая разница через что кварц вызывать? |
| Автор: jk1 22.1.2014, 20:08 | ||
В спринге есть некоторое количество хелпер-классов, упрощающих работу с Quartz для распространенных кейсов, тот же MethodInvokingJobDetailFactoryBean например. Но никто, конечно, не запрещает использовать родное API как есть. |
| Автор: sergioK1 27.1.2014, 08:23 |
| У меня тут такая штука выходит, бежит мой скедуляр раз в час , обращаеться к облако сервису ,пишет в MySQL потом читает и шлет алерты по майлу, если надо, Ничего сложного но раз в 4-5 дней connection теряеться (пишет что pool пустой), прописан он в (context.xml томсата) , в mySQL видно как при новом запуске открываються новые потоки, но закрываються не всегда , конекшион проверял ,открытых не остаеться , Чем лечить такое? |
| Автор: sergioK1 28.7.2014, 07:33 | ||||||
Кварц версии 2, и выше перестал работать, кто нидь сталкивался как исправлять? В гугле ничего внятного не нашел |