используя кварц без кварцевого плагина в граалях - PullRequest
1 голос
/ 16 марта 2012

Я пытаюсь использовать кварц для планирования заданий в Grails без использования плагина.это код:

1 - RunMeTask.java

package tt;
public class RunMeTask {
    public void printMe() {
        System.out.println("Run Me ~"); 
    }
} 

2 - resources.groovy (под conf / spring)

import org.springframework.scheduling.quartz.JobDetailFactoryBean;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.springframework.scheduling.quartz.SimpleTriggerBean;
import tt.RunMeTask

beans = {
    runMeTask(RunMeTask){}

    runMeJob(JobDetailFactoryBean) {
        targetObject = ref('runMeTask')
        targetMethod = "printMe"
    }

    simpleTrigger(SimpleTriggerBean){
        jobDetail = ref('runMeJob')
        repeatInterval = "5000"
        startpDelay = "1000"
    }

    schedulerFactoryBean(SchedulerFactoryBean){
        jobDetails = [ref('runMeJob')]
        triggers   = [ref('simpleTrigger')]
    }

}

я получаю следующее исключение: Ошибка Фатальная ошибка во время компиляции org.apache.tools.ant.BuildException: java.lang.IncompatibleClassChangeError: класс org.springframework.scheduling.quartz.SimpleTriggerBean имеет интерфейс org.quartz.SimpleTrigger в качестве суперкласса (используйте --stacktraceполный след)

кто-нибудь может помочь?

1 Ответ

0 голосов
/ 19 марта 2012

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

есть 1 изменение в коде из вопроса:

  1. RunMeTask.java (это также может быть RunMeTask.groovy) должен реализовывать runnable и поэтому он должен выглядетьthis:

    package tt;

    import java.io.File;

    import java.io.IOException;

    import java.util.Random;

    открытый класс RunMeTask реализует Runnable {

    статический Random r = new Random ();

    public void printMe () создает IOException {

    File f =новый файл ("c: \ ofer.txt" + r.nextInt ());

    f.createNewFile ();

    System.out.println ("fff");

    }

    public void run () {

    try {

    printMe ();

    } catch (IOException e) {

    // TODO Автоматически сгенерированный блок захвата

    e.printStackTrace ();

    }

    }

    }
    

одна забавная вещь - это печать "fff"происходит только 2 раза, но новый файл создается, как ожидается, каждые 5 секунд.

ok, так что теперь новый файл создается каждые 5 секунд в каталоге c.Нет плагинов и никаких хлопот.если кто-нибудь знает, почему System.out.println ("fff");происходит только 2 раза, я буду рад узнать.

спасибо

...