powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Работа с Quartz.
25 сообщений из 43, страница 1 из 2
Работа с Quartz.
    #39604188
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть такое
Код: 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.
public class Xxx1 {


    public static void main(String[] args) throws IOException, SchedulerException {

        JobDetail job = JobBuilder
                .newJob(QuartzJob.class)
                .withIdentity("QuartzJob", "group1")
                .storeDurably()
                .build();

        Trigger trigger1 = TriggerBuilder
                .newTrigger()
                .withIdentity("trigger1", "group1")
                .withSchedule(CronScheduleBuilder
                        .cronSchedule("0/5 * * * * ?"))
                .forJob(job)
                .build();

        SchedulerFactory schedFact = new StdSchedulerFactory();
        Scheduler sched = schedFact.getScheduler();
        sched.start();

        sched.addJob(job, true);
        sched.scheduleJob(trigger1);
    }

    public class QuartzJob implements Job {

        @Override
        public void execute(JobExecutionContext context) throws JobExecutionException {
            System.out.println("0000000000000000000000000");

        }

    }
}


запускается , но не выводит
пишет
log4j:WARN No appenders could be found for logger (org.quartz.impl.StdSchedulerFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

как без этого логера?
...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604189
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадякак без этого логера?
"как" что? Как спрятать нытьё от log4j? Как перенаправить лог в system.out? Как подключить slf4j когда либа логирует в log4j?
...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604191
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяSee http://logging.apache.org/log4j/1.2/faq.html#noconfig for more infoавтор Why do I see a warning about "No appenders found for logger" and "Please configure log4j properly"?

This occurs when the default configuration files log4j.properties and log4j.xml can not be found and the application performs no explicit configuration. log4j uses Thread.getContextClassLoader().getResource() to locate the default configuration files and does not directly check the file system. Knowing the appropriate location to place log4j.properties or log4j.xml requires understanding the search strategy of the class loader in use. log4j does not provide a default configuration since output to the console or to the file system may be prohibited in some environments. Also see FAQ: Why can't log4j find my properties in a J2EE or WAR application?.
...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604194
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczКак перенаправить лог в system.out?для начала достаточно этого
...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604197
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604213
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подсунул xml
стал выводить
Код: plaintext
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.
[INFO] 19 фев 04:33:54.584 PM main [org.quartz.core.QuartzScheduler]
Scheduler meta-data: Quartz Scheduler (v2.2.3) 'DefaultQuartzScheduler' with instanceId 'NON_CLUSTERED'
  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
  NOT STARTED.
  Currently in standby mode.
  Number of jobs executed: 0
  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads.
  Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.


[INFO] 19 фев 04:33:54.584 PM main [org.quartz.impl.StdSchedulerFactory]
Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'

[INFO] 19 фев 04:33:54.584 PM main [org.quartz.impl.StdSchedulerFactory]
Quartz scheduler version: 2.2.3

[INFO] 19 фев 04:33:54.584 PM main [org.quartz.core.QuartzScheduler]
Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.

[ERROR] 19 фев 04:33:55.016 PM DefaultQuartzScheduler_QuartzSchedulerThread [org.quartz.core.ErrorLogger]
An error occured instantiating job to be executed. job= 'group1.QuartzJob'

org.quartz.SchedulerException: Problem instantiating class 'xxx1.Xxx1$QuartzJob' [See nested exception: java.lang.InstantiationException: xxx1.Xxx1$QuartzJob]
	at org.quartz.simpl.SimpleJobFactory.newJob(SimpleJobFactory.java:58)
	at org.quartz.simpl.PropertySettingJobFactory.newJob(PropertySettingJobFactory.java:69)
	at org.quartz.core.JobRunShell.initialize(JobRunShell.java:127)
	at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:375)
Caused by: java.lang.InstantiationException: xxx1.Xxx1$QuartzJob
	at java.lang.Class.newInstance(Class.java:427)
	at org.quartz.simpl.SimpleJobFactory.newJob(SimpleJobFactory.java:56)
	... 3 more
Caused by: java.lang.NoSuchMethodException: xxx1.Xxx1$QuartzJob.<init>()
	at java.lang.Class.getConstructor0(Class.java:3082)
	at java.lang.Class.newInstance(Class.java:412)
	... 4 more
[INFO] 19 фев 04:33:55.031 PM DefaultQuartzScheduler_QuartzSchedulerThread [org.quartz.simpl.RAMJobStore]
All triggers of Job group1.QuartzJob set to ERROR state.
что не нравится для нормальной работы?
...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604222
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

Только начал Java осваивать. Понимаю. QuartzJob у тебя вложеный не статический класс. Экзмпляр такого класса можно создать только при наличии экземпляра внешнего класса. Компилятор генерирует такой конструктор чтобы передать этот объект внешнего класса . А Quartz хочет от тебя дефолтный конструктор. Класс QuartzJob можно было объявить статическим.
...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604229
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczТолько начал Java осваиватья просто взял готовый примеры, как есть :)
...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604235
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяBlazkowiczТолько начал Java осваиватья просто взял готовый примеры, как есть :)
Уверен что вложеных классов в нём не было.
...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604244
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczУверен что вложеных классов в нём не было.правильно уверен...
...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604444
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот так работает
Код: 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.
 public static void main(String[] args)  {
        try {
            myStartTime = formatter.parse("2018-02-19 22:42");
           
            JobDetail job = JobBuilder
                    .newJob(SimpleQuartzJob.class)
                    .withIdentity("SimpleQuartzJob", "group1")
                    .storeDurably()
                    .build();

            trigger = newTrigger()
                    .withIdentity("trigger", "group1")
                    .startAt(myStartTime) // some Date
                    .forJob("SimpleQuartzJob", "group1") // identify job with name, group strings
                    .build();


            SchedulerFactory schedFact = new StdSchedulerFactory();
            sched = schedFact.getScheduler();
            sched.start();

            sched.addJob(job, true);
            sched.scheduleJob(trigger);
        } catch (ParseException | SchedulerException ex) {
            Logger.getLogger(Xxx1.class.getName()).log(Level.SEVERE, null, ex);
        }
    }


как запустить этот же триггер в новое время после отработки в предыдущее время?
...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604454
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604456
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
это читал, но там нет как переназначить
Код: java
1.
2.
3.
4.
5.
  SimpleTrigger trigger = (SimpleTrigger) newTrigger()
    .withIdentity("trigger1", "group1")
    .startAt(myStartTime) // some Date
    .forJob("job1", "group1") // identify job with name, group strings
    .build();


как его запустить в новое время?
...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604461
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

Что такое "переназначить" я не знаю. Триггер один раз формируется, зачем ему что-то "переназначать".
Код: java
1.
2.
3.
  .withSchedule(simpleSchedule()
        .withIntervalInMinutes(5)
        .repeatForever())
...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604466
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczвадя,

Что такое "переназначить" я не знаю. Триггер один раз формируется, зачем ему что-то "переназначать".
Код: java
1.
2.
3.
  .withSchedule(simpleSchedule()
        .withIntervalInMinutes(5)
        .repeatForever())


мне надо чтоб класс отработал еще многократно, в задаваемое время, время заранее не известно
...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604467
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
следуеще выполнени может быть и через минуту и через 6 минут
...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604469
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. расписание вам неизвестно, но планировщик нужен?
Интересный подход.
Надо будет взять на вооружение.
...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604488
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovТ.е. расписание вам неизвестно, но планировщик нужен?
Интересный подход.
Надо будет взять на вооружение.
назови это не расписанием и не планировщиком.
мне надо запускать событие в следующий раз через разное время, после его предыдущего совершения.
...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604498
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяназови это не расписанием и не планировщиком.
мне надо запускать событие в следующий раз через разное время, после его предыдущего совершения.

Э-э-э я один тут вижу, что нужно запускать что-то по событию.
Причем логика события по которому происходит событие может быть теоретически любым.
ИМХО можно сделать так:
1) Создается "Job", который дергается раз в n времени (например каждый час, но можно и меньше)
2) Этот "Job" вызывает функцию, которое проверяет наступило "событие" или нет
3) Если "событие" наступило, то вызывает функцию, которая делает что-то полезное
...
4) PROFIT
...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604499
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulвадяназови это не расписанием и не планировщиком.
мне надо запускать событие в следующий раз через разное время, после его предыдущего совершения.

Э-э-э я один тут вижу, что нужно запускать что-то по событию.
Причем логика события по которому происходит событие может быть теоретически любым.
ИМХО можно сделать так:
1) Создается "Job", который дергается раз в n времени (например каждый час, но можно и меньше)
2) Этот "Job" вызывает функцию, которое проверяет наступило "событие" или нет
3) Если "событие" наступило, то вызывает функцию, которая делает что-то полезное
...
4) PROFIT
я наверно разучился писать на русском....
попробую ещё раз
есть класс, который надо вызывать через разные промежутки времени, желательно это делать не через задержку, а указанием времени вызова.
желательно иметь возможность установки нескольких таких «триггеров» для запуска.
таких запусков может быть бесконечное число раз.
...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604503
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovТ.е. расписание вам неизвестно, но планировщик нужен?
Интересный подход.
Надо будет взять на вооружение.

Это сарказм? Я часто такое встречал. В одной учетной системе, например, надо было отправлять письма в указанное менеджерами время. Записей -- пара-тройка штук в неделю, точность указания времени -- пять минут. Выполнять запрос каждые 5 минут, чтобы три раза в день угадать как-то не понравилось. Запуск по расписанию - самое то. Главное, правильно сменить время запуска при изменении данных.

По теме. rescheduleJob() с новым триггером разве не то, что надо?
http://www.quartz-scheduler.org/documentation/quartz-2.x/cookbook/UpdateTrigger.html
...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604517
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak,
спасибо за направление, только там странный совет... но на основании него получилось
основной
Код: 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.
public class Xxx1 {

    public static SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm");

    static Date myStartTime;
    static SimpleTrigger trigger;
    static Scheduler sched;
    static JobDetail job;

    public static void main(String[] args) {
        try {
            myStartTime = formatter.parse("2018-02-20 09:52");

            job = JobBuilder
                    .newJob(SimpleQuartzJob.class)
                    .withIdentity("SimpleQuartzJob", "group1")
                    .storeDurably()
                    .build();

            trigger =  (SimpleTrigger) newTrigger()
                    .withIdentity("trigger", "group1")
                    .startAt(myStartTime) // some Date
                    .forJob("SimpleQuartzJob", "group1") // identify job with name, group strings
                    .build();

            SchedulerFactory schedFact = new StdSchedulerFactory();
            sched = schedFact.getScheduler();
            sched.start();

            sched.addJob(job, true);
            sched.scheduleJob(trigger);
        } catch (ParseException | SchedulerException ex) {
            Logger.getLogger(Xxx1.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

}



"дежурный"
Код: 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.
public class SimpleQuartzJob implements Job {

    public SimpleQuartzJob() {
    }
    
    static int f = 0;  // ограничитель запусков

    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        try {
            System.out.println("In SimpleQuartzJob - executing its JOB at " + new Date() + " by " + context.getTrigger().getStartTime());
            myStartTime = formatter.parse("2018-02-20 09:53.020");
            if (f == 0) {
                f = 1;
                Trigger oldTrigger = sched.getTrigger(triggerKey("trigger", "group1"));

                TriggerBuilder tb = oldTrigger.getTriggerBuilder();

                trigger = (SimpleTrigger) tb
                        .startAt(myStartTime) 
                        .forJob("SimpleQuartzJob", "group1") 
                        .build();

                sched.rescheduleJob(oldTrigger.getKey(), trigger);

            }
        } catch (ParseException | SchedulerException ex) {
            Logger.getLogger(SimpleQuartzJob.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604535
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. SakЭто сарказм?Да.
Когда есть события без чёткого расписания, логичным будет цикл с ожиданием на "объекте события".
Вместо странных претензий к планировщику.
...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604538
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovКогда есть события без чёткого расписания, логичным будет цикл с ожиданием на "объекте события".что значит ожидание на "объекте события"?
Basil A. SidorovВместо странных претензий к планировщику.и что значит странных?
нужно было просто понять как работать с этим планировщиком.
к сожалению доки не слишком охватывают возможности.
...
Рейтинг: 0 / 0
Работа с Quartz.
    #39604541
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадячто значит ожидание на "объекте события"?когда от тебя будет ТЗ тогда и поймешь, кто именно устанавливает будильник.

вадянужно было просто понять как работать с этим планировщиком.
Поэтому разговор выше лишен смысла.
Изучай.
...
Рейтинг: 0 / 0
25 сообщений из 43, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Работа с Quartz.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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