|
Модераторы: LSD, AntonSaburov |
|
Walker |
|
|||
Опытный Профиль Группа: Участник Сообщений: 363 Регистрация: 23.10.2006 Репутация: нет Всего: 16 |
Приветы!
Задача простая - надо периодически брать данные из одного места и класть в другое. Какие данные и как часто брать - пользователь скажет (конфигом или через веб страницу пока без разницы). В принципе это был бы обычный системный сервис, но надо, чтобы запускалось под управлением Application сервера. То есть надо, чтобы сервер стартовал и каким-нибудь тредом запускал и мою аппликуху, которая живёт, пока он работает. Я структуру Java EE приложения только в виде квадратиков представляю. BD -> EJB -> JSP/JSF -> HTML. И есть у меня интуитивное чувство, что бизнес логика где-то в EJB жить должна, но как это так реализовать, чтобы к AS на манер полипа присосаться, - без понятия. Вопрос собственно заключается в том - чтобы на эту тему почитать (можно на международном). Знаю про официальный оракл Java EE 7 tutorial, но это на два-три месяца, начиная с JSF, а мне бы сразу ближе к делу. Спасибо за любые советы! -------------------- "От вчерашних побед остаётся усталость, если завтрашний день не сулит ничего..." |
|||
|
||||
Walker |
|
|||
Опытный Профиль Группа: Участник Сообщений: 363 Регистрация: 23.10.2006 Репутация: нет Всего: 16 |
Хорошо. Несколько перефразирую задачу. Как правильно написать программу, которая запускается в AS при его старте и хеллоувордит раз в минуту в лог на протяжении всего AS-овского жизненного цикла? Ну типа правильная точка входа и всё такое. (Где вот там метод Main должен быть. ) Мысль разовью дальше сам. Видел, что у сервлета есть какой-то init. Метод, вроде, по смыслу подходит. Тред/таймер прямо в нём стартовать? Но общий смысл сервелета - респондить на реквесты. И использовать, как я хочу, наверное, не очень правильно?
-------------------- "От вчерашних побед остаётся усталость, если завтрашний день не сулит ничего..." |
|||
|
||||
Samotnik |
|
|||
Super star ! Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 5 Всего: 191 |
Если нужно простое и быстрое решение, я бы порекомендовал quartz/B
Идея: Пишется сервлет (это входная точка, метода main нет в веб прилагах), в нем определяешь кварц, который по расписанию будет дергать нужный метод. |
|||
|
||||
Walker |
|
|||
Опытный Профиль Группа: Участник Сообщений: 363 Регистрация: 23.10.2006 Репутация: нет Всего: 16 |
Ага, ну то есть сервлет-таки нормально заюзать для этих целей. За quartz Спасибо - заценим. Вопрос пока открыт на случай альтернативных интересных мнений.
-------------------- "От вчерашних побед остаётся усталость, если завтрашний день не сулит ничего..." |
|||
|
||||
Samotnik |
|
|||
Super star ! Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 5 Всего: 191 |
Walker, В Java Web всё сервлеты. Даже новомодные Spring controller'ы внутри сервлеты.
Все зависит только от тебя, будет ли приложение дорабатываться, развиваться, дополняться, будет ли оно сложное или простое. Если в планах достаточно большое приложение, то рекомендую использовать Spring. Без него скучно, даже в какой-то степени сложнее. Но на это нужно много времени, что бы его изучить. Если все будет просто, то нет смысла его сюда тянуть. В нем, кстати, есть свой скедулер. |
|||
|
||||
sergioK1 |
|
||||||
Опытный Профиль Группа: Участник Сообщений: 416 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
Walker, у меня реализовано так,
в web.xml прописываем
т.е. InitContextListener это entryPoint(main) вебовской апликации. ну естесно logger сконфигурируй, Samotnik, KISS зачем что-то стороннее? профит где? |
||||||
|
|||||||
Samotnik |
|
|||
Super star ! Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 5 Всего: 191 |
sergioK1, как-то не работал с этим скедулером, нужно подробнее изучить
|
|||
|
||||
jk1 |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 5 Всего: 75 |
Давай-ка подумаем, что умеет Quartz и не умеет старый добрый ScheduledExecutorService: 1. Quartz умеет привязывать выполнение к конкретному времени по часам, а не просто оперирует интервалами. В том числе позволяет выполнять задачи каждый третий четверг восьмого месяца в 3.15 утра. 2. Quartz умеет отслеживать ситуации, когда периодичность выполнения сбивается (например прошлое выполнение задачи заняло огромное количество времени, превысив даже интервал между запусками) и пытается выправить расписание, "нагоняя" график при дальнейших срабатываниях таймера. 3. Quartz умеет персистить джобы, позволяя переживать рестарты сервера не сбивая расписание выполнения задач. 4. Quartz умеет правильно работать в кластере, не дублируя выполнения задач. Кластеризация для современного AS - очень частый кейс. 5. Quartz умеет работать в контексте транзакций, в том числе распределенных. 6. Quartz предоставляет базовые средства для мониторинга и сбора статистики по выполнению задач. Выбирать реализацию, разумеется, надо исходя из потребностей конкретного приложения, которых мы пока не знаем. -------------------- Opinions are like assholes — everybody has one |
|||
|
||||
sergioK1 |
|
||||
Опытный Профиль Группа: Участник Сообщений: 416 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
1)T,C, сказал что надо каждую минуту, drinking glass of milk caw doesn't require 2) Кварц это не быстрое решение, с ним надо разбираться , А в реальной жизни, когда аджал на 3 недели , времени с ним разбираться особо нет , 3) Ты с ним работал ? или прочитал на сайте какой он крутой ? |
||||
|
|||||
Samotnik |
|
|||
Super star ! Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 5 Всего: 191 |
Мне хватило первый раз в жизни трех часов, уже года два класс не менялся, все работает Ну да ладно, все это флуд, кому что нужно, то и выбирают. Лично на мой взгляд, ScheduledExecutorService показался не гибким. Это сообщение отредактировал(а) Samotnik - 21.1.2014, 23:36 |
|||
|
||||
Magistrus |
|
|||
Жив Профиль Группа: Участник Сообщений: 129 Регистрация: 14.6.2006 Где: г. Одесса Репутация: нет Всего: 1 |
если решишь связыватся с EJB то вот ссылочка
http://docs.oracle.com/javaee/6/tutorial/doc/bnboy.html Это сообщение отредактировал(а) Magistrus - 22.1.2014, 12:51 --------------------
~ вот такая вот загагулина ~ |
|||
|
||||
jk1 |
|
||||
Эксперт Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 5 Всего: 75 |
Если задача "разобраться с кварцем" занимает больше трех недель, то, конечно, использовать его не стоит. Квалификацию имеющихся разработчиков всегда стоит принимать во внимание при выборе фреймворков и библиотек. Мой первый опыт с кварцем дал работающий результат через час-два, просто потому что в гугле полно примеров + есть документация.
Сам я использую кварц уже порядка двух лет, в основном через спринг. Правда мне не очень понятно, как этот вопрос поможет топикстартеру решить его проблему. Чтобы избежать недопонимания: Я не пытаюсь объявить кварц панацеей. Мой пост описывает те фичи, которые в кварце есть по сравнению с ExecutorService'ом, отвечает на заданный ранее вопрос. Дальше ТС пусть сам смотрит, какие фичи больше подходят под его конкретную задачу. -------------------- Opinions are like assholes — everybody has one |
||||
|
|||||
sergioK1 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 416 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
Я думаю T.C. этого и хотел (увидеть несколько вариантов решения) , Про спринг не понял ?какая разница через что кварц вызывать? Это сообщение отредактировал(а) sergioK1 - 22.1.2014, 19:25 |
|||
|
||||
jk1 |
|
|||
Эксперт Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 5 Всего: 75 |
В спринге есть некоторое количество хелпер-классов, упрощающих работу с Quartz для распространенных кейсов, тот же MethodInvokingJobDetailFactoryBean например. Но никто, конечно, не запрещает использовать родное API как есть. -------------------- Opinions are like assholes — everybody has one |
|||
|
||||
sergioK1 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 416 Регистрация: 30.1.2011 Репутация: нет Всего: нет |
У меня тут такая штука выходит, бежит мой скедуляр раз в час , обращаеться к облако сервису ,пишет в MySQL потом читает и шлет
алерты по майлу, если надо, Ничего сложного но раз в 4-5 дней connection теряеться (пишет что pool пустой), прописан он в (context.xml томсата) , в mySQL видно как при новом запуске открываються новые потоки, но закрываються не всегда , конекшион проверял ,открытых не остаеться , Чем лечить такое? |
|||
|
||||
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |