![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
cosmonaft |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 11.1.2008 Репутация: нет Всего: нет |
Привет. Только начал разбираться с quartz.
Есть такая задача: при старте приложения, достать различные настройки тригера из БД (время запуска, количество запусков, дни и т.д.), создать этот тригер, который в нужное время запустит job. И второе, есть веб-интерфейс, в котором эти настройки тригера можно менять. Подскажите пожалуйста, примерно, как это реализовать. Долго думал, пока ничего путного не придумал. |
|||
|
||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
А в чем собственно проблема? В каком моменте у возникли сложности? Весь порядок действий вы описали, остаётся только реализовать...
|
|||
|
||||
cosmonaft |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 11.1.2008 Репутация: нет Всего: нет |
Есть несколько вопросов, которые хотелось бы прояснить.
Т.е. в web.xml прописать сервлет, который стартует вместе с приложением? А там в методе init() и создавать тригер? А что потом будет с этим сервелтом, отработал и висит себе дальше в памяти? А нормально ли, если действия по созданию тригера перенести в уже существующий сервлет quartz'a QuartzInitializerServlet? |
|||
|
||||
Zamuta |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 18.1.2006 Репутация: 4 Всего: 6 |
cosmonaft,
Не надо в методе init создавать триггер, триггер(ы) создаёшь в отдельном классе, в бд только хранятся настройки. При запуске приложения настройки будут извлекаться из бд (время след. запуска, результат пред. выполнения и т.д.) и выполняться, при остановке выгружаться.
Странный у вас способ написния кода. Короче, он не для того писался. Сообщай о результатах. -------------------- Thank you opensource. |
||||||
|
|||||||
cosmonaft |
|
||||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 11.1.2008 Репутация: нет Всего: нет |
Zamuta, я все-таки не понял. Код, что ты привел у меня прописан. Он, как я понимаю, для запуска самого планировщика.
Так я сделал такой класс. И где тогда при запуске приложения обратиться к объекту этого класса?
Опять же, я как раз и хочу узнать, где мне извлевкать эти настройки |
||||
|
|||||
Zamuta |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 18.1.2006 Репутация: 4 Всего: 6 |
cosmonaft, например
Метод run() сохранит настройки в бд и запустит триггер. В след. раз нет необходимости запускать метод run(), т.к. настройки уже будут лежать в бд.
В коде это объекты JobDetail и CronTrigger. Для того чтобы кварц мог хранить настройки в бд сначала необходимо создать для этого таблицы, с которыми он будет работать и описать параметры соединения с бд в quartz.properties. Структуру таблиц для вашей бд можно найти в самом пакете quartz. quartz-1.6.0.zip\docs\dbTables . Это моё решение, применимо для моей ситуации. Вы можете сделать по другому исходя из ваших запросов, например почитав Quartz Job Scheduling Framework: Building Open Source Enterprise Applications -------------------- Thank you opensource. |
||||
|
|||||
cosmonaft |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 11.1.2008 Репутация: нет Всего: нет |
Zamuta, проблема в том, что нету специальных таблиц для кварца и нету JobStores. Есть таблицы, которые уже давно существуют и менять их, наверное, не будут.
|
|||
|
||||
Zamuta |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 18.1.2006 Репутация: 4 Всего: 6 |
cosmonaft, а как ты тогда собираешься хранить настройки в бд, если у тебя нет к ней доступа? Значит храни в файле или в памяти. Можешь посмотреть в примерах, которые идут в пакете с кварцем.
-------------------- Thank you opensource. |
|||
|
||||
cosmonaft |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 11.1.2008 Репутация: нет Всего: нет |
Да не том смысле, что совсем нету доступа к базе
![]() |
|||
|
||||
Zamuta |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 18.1.2006 Репутация: 4 Всего: 6 |
cosmonaft, т.е. таблицы для триггеров есть, а для кварца нет? Это как?
-------------------- Thank you opensource. |
|||
|
||||
cosmonaft |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 11.1.2008 Репутация: нет Всего: нет |
Таблицы не для самих тригеров, а настройки различные по количеству запусков, дням запуска и т.д. Просто раньше предполагалось делать приложение без использования квраца, поэтому и остались поля в таблице для этого дела.
Zamuta, я дико извиняюсь за свою непонятливость, но как класс MainCronTrigger, что ты привел создаст свой экземпляр и запустит метод run() при старте эппликейшена. |
|||
|
||||
Zamuta |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 18.1.2006 Репутация: 4 Всего: 6 |
cosmonaft, никак. Метод, run() ты можешь запустить вручную, но после этого твои настройки сохранятся в бд и при следующих запусках кварц будет смотреть в бд и решать что выполнять и когда. Твоя задача только указать инициализировать все триггеры со всеми настройками.
-------------------- Thank you opensource. |
|||
|
||||
cosmonaft |
|
|||
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 11.1.2008 Репутация: нет Всего: нет |
Ага, стало несколько прояснятся.
Т.е. если я сразу в бд запихну все необходимые данные, то надобность в запуске того метода run() из MainCronTrigger отпадает вовсе (да и необходимость самого класса)? Я правильно понял? Тогда, похоже, все же придется настраивать JobStore и коннект с базой... |
|||
|
||||
Zamuta |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 18.1.2006 Репутация: 4 Всего: 6 |
cosmonaft, да всё правильно.
-------------------- Thank you opensource. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |