Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / quartz scheduler cron / 14 сообщений из 14, страница 1 из 1
24.01.2014, 10:06
    #38536353
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
quartz scheduler cron
Здравствуйте, такая проблема.
Поставил простое выполнение задачи, на определенное время, каждый день.
Автозапуск задания осуществляется через web.xml
Код: xml
1.
2.
3.
4.
5.
 <servlet>
        <servlet-name>Schedule</servlet-name>
        <servlet-class>nix.system.scheduler.CronSchedule</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>



Дак воот, после рестарта томката задание начинает выполнятся дважды.
Еще один перезапуск приводит к тому же, еще один... и вновь кол-во выполнений задания увеличивается на один.
Понимаю, что где-то он остается, но где - не знаю. Может кто подскажет...
Спасибо.
...
Рейтинг: 0 / 0
24.01.2014, 11:03
    #38536453
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
quartz scheduler cron
У сервлета есть метод destroy. Его стоит переопределить и в нем останавливать скедулер.
nix.system.scheduler.CronSchedule что за класс? Откуда?
...
Рейтинг: 0 / 0
24.01.2014, 11:56
    #38536572
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
quartz scheduler cron
Blazkowicz,

это я просто его так назвал, в процессе экспериментов.

вот содержание:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
public class CronSchedule {

    public CronSchedule() throws SchedulerException {
        runningSch();
    }

    private void runningSch() throws SchedulerException {
        JobDetail job = JobBuilder
                .newJob(SimpleJob.class)
                .withIdentity("SimpleJob")
                .build();

        Trigger trigger = TriggerBuilder
                .newTrigger()
                .withIdentity("SimpleJob")
                .withSchedule(CronScheduleBuilder.cronSchedule("0 0 10 * * ?"))
                .build();

        Scheduler scheduler = new StdSchedulerFactory().getScheduler();
        scheduler.start();
        scheduler.scheduleJob(job, trigger);
    }

    public static void main(String[] args) throws SchedulerException {
        JobDetail job = JobBuilder
                .newJob(SimpleJob.class)
                .withIdentity("SimpleJob")
                .build();

        Trigger trigger = TriggerBuilder
                .newTrigger()
                .withIdentity("SimpleJob")
                .withSchedule(CronScheduleBuilder.cronSchedule("0 39 15 * * ?"))
                .build();

        Scheduler scheduler = new StdSchedulerFactory().getScheduler();
        scheduler.start();
        scheduler.scheduleJob(job, trigger);
    }
}
...
Рейтинг: 0 / 0
24.01.2014, 12:04
    #38536596
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
quartz scheduler cron
Я так понял, что это основа работы с сервлетами, к сожалению так и не проникся ими, так как в основном ими и не пользовался.
Я правильно понимаю, что при деплое или рестарте томката, нужно вызывать какой-то метод, который бы убивал все "запущенные" сервлеты, в частности destroy?
Наверное не так понимаю :)
...
Рейтинг: 0 / 0
24.01.2014, 12:06
    #38536603
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
quartz scheduler cron
Ну, кто ж в конструкторе сервлета инициализацию пишет? У Servlet-а есть определенный lifecycle. Нужно написать инициализацию в init- и останавливать скедулер в destroy- методах. Вообще у Quarz ведь должны быть готовые Servlet или ServletContextListener. Зачем самому изобретать?
...
Рейтинг: 0 / 0
24.01.2014, 12:08
    #38536609
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
quartz scheduler cron
QuartzInitializerServlet
...
Рейтинг: 0 / 0
24.01.2014, 12:12
    #38536618
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
quartz scheduler cron
Blazkowicz,

Спасибо, вот, нашел, кажется http://quartz-scheduler.org/api/2.0.0/org/quartz/ee/servlet/QuartzInitializerServlet.html

там есть параметр
Код: xml
1.
<param-name>shutdown-on-unload</param-name>



Как раз похоже он и будет "вырубать" сервлет.
...
Рейтинг: 0 / 0
24.01.2014, 12:15
    #38536632
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
quartz scheduler cron
хотя вон чо пишут, он и так тру по умолчанию...

The init parameter 'shutdown-on-unload' can be used to specify whether you want scheduler.shutdown() called when the servlet is unloaded (usually when the application server is being shutdown). Possible values are "true" or "false". The default is "true".
...
Рейтинг: 0 / 0
24.01.2014, 12:19
    #38536642
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
quartz scheduler cron
п.с. вынес инициализацию из метода раннинг :)
...
Рейтинг: 0 / 0
24.01.2014, 12:23
    #38536651
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
quartz scheduler cron
Nixicп.с. вынес инициализацию из метода раннинг :)
Из конструктора надо убрать. У сервлета есть init и destroy, которые выполняются только один раз за время жизни контекста.
Не понятно зачем вообще через сервлет делать, через ServletContextListener будет более очевидно.
Единственно что в Servlet удобно ещё и мониторинг прикрепить за сосоянием scheduler-а, если нужно.
...
Рейтинг: 0 / 0
24.01.2014, 12:28
    #38536669
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
quartz scheduler cron
Blazkowicz,

А правильно я понимаю, что нужно тогда создавать Quartz properties file ?
...
Рейтинг: 0 / 0
24.01.2014, 12:30
    #38536676
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
quartz scheduler cron
ладно пойду доки читать, не получится с наскока все сделать, похоже
...
Рейтинг: 0 / 0
24.01.2014, 21:57
    #38537453
Sergunka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
quartz scheduler cron
Nixic,

а что Вы так уперлись в сервлет?

Если проект использует спринг то проще использовать аннотацию

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
package com.schedule;
 
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
 
/**
 *  Schedule Bean run according scheduling.job.cron property value.
 */
 
@Component
public class ScheduledJob {
    @Value("${scheduling.job.cron}") private String cron ;
 
    private static final Logger LOGGER = Logger.getLogger(ScheduledJob.class);
 
    @Scheduled(cron = "${scheduling.job.cron}")
 
    public void run() {
        LOGGER.info("run() = " + cron);
    }
}



здесь все детали у меня в блоге - http://vyatkins.wordpress.com/2013/12/03/miscellaneous-java-code/#more-92
...
Рейтинг: 0 / 0
28.01.2014, 11:09
    #38540164
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
quartz scheduler cron
Sergunka,

проект на vaadin
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / quartz scheduler cron / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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