Нет способа запустить Quartz на сервере - PullRequest
1 голос
/ 08 февраля 2011

Я борюсь с этим в течение недели. используя Jboss5.1.x, EJB3.0, кварц1.8 люди отсылают меня к документам, но кажется, что номер 1 действительно подсказывает или не понимает меня.

Есть ли способ запустить Java-код в EJB-компоненте для планирования кварца? Я уже понял, как инициализировать и зациклить кварцевый планировщик ... но как вы на самом деле вызываете метод, который запускает планировщик при развертывании приложения?

если вам нужен планировщик JBOSS для первого вызова метода init, который планирует Quartz, тогда Quartz для меня бесполезен! я бы просто продолжил планировщик Jboss.

У кого-нибудь есть для этого решение?

спасибо, лучей.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2011

Да, но я хотел добиться, чтобы мой кварц стартовал при развертывании.но я нашел решение для этого, я использую

@Service(objectName = "..")
@Management(...)

, и этот класс будет запущен, как только мой проект будет развернут.

0 голосов
/ 08 февраля 2011

Я не уверен, что понимаю ваш вопрос, но разве вы не можете сохранить фабрику планировщиков Quartz в статической переменной и инициализировать ее статическим инициализатором или статическим методом?Что-то вроде:

public static Scheduler sched;

public static void init(ServletContext servletContext) throws SchedulerException {
    if (sched == null || !sched.isStarted()) {
        String quartzPropertiesLocation = UtilityClass.getYourQuartzConfig();
        try {
            log.info(new File(quartzPropertiesLocation).getCanonicalPath());
        } catch (IOException e) {
            e.printStackTrace();
        }
        SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory(quartzPropertiesLocation);
        sched = schedFact.getScheduler();
        sched.getContext().put(ServletContext.class.getName(), servletContext);
        sched.start();
    }
}
...