PDA

View Full Version : [JAVA] creare uno schedulatore


vile83
13-10-2013, 11:32
buon giorno ragazzi,
avrei la necessità di implementare uno schedulatore in java (possibilmente un file jar runnable)


ho trovato questo esempio:

import org.quartz.impl.*;
import org.quartz.*;
import java.util.*;

/**
*
* @author Federico
*/

public class PrimoEsempio {
public static void main(String a[]) throws Exception {
SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory();
Scheduler sched = schedFact.getScheduler();
sched.start();
JobDetail jobDetail = new JobDetail("myJob",sched.DEFAULT_GROUP,SimpleJob.class);
SimpleTrigger trigger = new SimpleTrigger("myTrigger",sched.DEFAULT_GROUP,new Date(),null,0,0L);
sched.scheduleJob(jobDetail, trigger);
Thread.currentThread().sleep(4000);
sched.shutdown();
}
}

----------------------------------------------------------------

public class SimpleJob {

/** Creates a new instance of SimpleJob */
public SimpleJob() {
}

public void execute(JobExecutionContext context)
throws JobExecutionException
{
try {
// Descrizione del trigger che ha avviato questo Job
System.out.println(context.getTrigger().getDescription());
// Tempo di partenza del Job
System.out.println(context.getFireTime());
// Nome del JobDetail
System.out.println(context.getJobDetail().getFullName());
// Descrizione del JobDetail
System.out.println(context.getJobDetail().getDescription());
// Data della precedente partenza di questo Job
System.out.println(context.getPreviousFireTime());
// Data della prossima partenza per questo Job
System.out.println(context.getNextFireTime());
System.out.println("SimpleJob in esecuzione.");
// Settaggio del risultato ottenuto da questo Job
context.setResult("Sono riuscito a scrivere");
}
catch(Exception e) {
context.setResult("Errore nell'esecuzione :"+e.toString());
}
// Stampa del risultato a schermo
System.out.println(context.getResult());
}
}

-----------------------------------------------------------------------

mi da il seguente errore:

log4j:WARN No appenders could be found for logger (org.quartz.simpl.SimpleThreadPool).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" java.lang.IllegalArgumentException: Job class must implement the Job interface.
at org.quartz.JobDetail.setJobClass(JobDetail.java:257)
at org.quartz.JobDetail.<init>(JobDetail.java:123)
at PrimoEsempio.main(PrimoEsempio.java:20)


ADESSO MI CHIEDO..

ma la libreria quartz funziona solo con spring o maven?

ragazzi per favore aiutatemi. Magari può tornar utile anche ad altri

grazie mille in anticipo

VICIUS
13-10-2013, 15:22
Il messaggio di errore mi sembra piuttosto chiaro.
Job class must implement the Job interface.
Aggiungi implements Job alla dichiarazione della tua classe. Implementa i metodi dell'interfaccia e riprova a lanciare il programma.

vile83
13-10-2013, 15:56
Ho risolto così:

SimpleTrigger st=new SimpleTrigger("mytrigger",sched.DEFAULT_GROUP,new Date(),
null,SimpleTrigger.REPEAT_INDEFINITELY,600L*1000L);

ho aggiunto alla chiamata del motodo SimpleTrigger da decorrenza del tempo

" SimpleTrigger.REPEAT_INDEFINITELY,600L*1000L)" -- ogni 10 minuti

e funge..

Grazie