powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / quartz scheduler cron
14 сообщений из 14, страница 1 из 1
quartz scheduler cron
    #38536353
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, такая проблема.
Поставил простое выполнение задачи, на определенное время, каждый день.
Автозапуск задания осуществляется через 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
quartz scheduler cron
    #38536453
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У сервлета есть метод destroy. Его стоит переопределить и в нем останавливать скедулер.
nix.system.scheduler.CronSchedule что за класс? Откуда?
...
Рейтинг: 0 / 0
quartz scheduler cron
    #38536572
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
quartz scheduler cron
    #38536596
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понял, что это основа работы с сервлетами, к сожалению так и не проникся ими, так как в основном ими и не пользовался.
Я правильно понимаю, что при деплое или рестарте томката, нужно вызывать какой-то метод, который бы убивал все "запущенные" сервлеты, в частности destroy?
Наверное не так понимаю :)
...
Рейтинг: 0 / 0
quartz scheduler cron
    #38536603
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, кто ж в конструкторе сервлета инициализацию пишет? У Servlet-а есть определенный lifecycle. Нужно написать инициализацию в init- и останавливать скедулер в destroy- методах. Вообще у Quarz ведь должны быть готовые Servlet или ServletContextListener. Зачем самому изобретать?
...
Рейтинг: 0 / 0
quartz scheduler cron
    #38536609
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
QuartzInitializerServlet
...
Рейтинг: 0 / 0
quartz scheduler cron
    #38536618
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
quartz scheduler cron
    #38536632
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя вон чо пишут, он и так тру по умолчанию...

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
quartz scheduler cron
    #38536642
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
п.с. вынес инициализацию из метода раннинг :)
...
Рейтинг: 0 / 0
quartz scheduler cron
    #38536651
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nixicп.с. вынес инициализацию из метода раннинг :)
Из конструктора надо убрать. У сервлета есть init и destroy, которые выполняются только один раз за время жизни контекста.
Не понятно зачем вообще через сервлет делать, через ServletContextListener будет более очевидно.
Единственно что в Servlet удобно ещё и мониторинг прикрепить за сосоянием scheduler-а, если нужно.
...
Рейтинг: 0 / 0
quartz scheduler cron
    #38536669
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

А правильно я понимаю, что нужно тогда создавать Quartz properties file ?
...
Рейтинг: 0 / 0
quartz scheduler cron
    #38536676
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ладно пойду доки читать, не получится с наскока все сделать, похоже
...
Рейтинг: 0 / 0
quartz scheduler cron
    #38537453
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
quartz scheduler cron
    #38540164
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergunka,

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


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