Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 32

Discussione: Quartz e Java

  1. #1

    Quartz e Java

    Scusate ma sono nuovo dell'ambiente.
    Con le mie poche conoscenze di programmazione Java mi sono inoltrato in un tema alquanto difficoltoso (per me).
    Attraverso Servlet e mysql ho creato un programma che mi crea un file csv. Ora vorrei che questo file venisse creato periodicamente (ad esempio ogni 5 minuti per testarlo). Qualcuno potrebbe aiutarmi con un esempio simile al mio..

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Ci dovresti spiegare perchè hai usato le Servlet (che sono un componente Web). Se il tuo scopo è quello di avviare un lavoro ad intervalli regolari, una WebApplication è quanto di più distante tu potessi scegliere (visto che una WebApplication prevede che vi sia interazione fra un client ed un server).

    Non sto dicendo che non sia fattibile, sto dicendo che non sceglierei mai di pilotare uno Shuttle per spostarmi di 5 metri.

    Poi, perchè Quartz (che, prima d'ora, non avevo nemmeno mai sentito nominare)? A quanto pare è uno scheduler per applicazioni Java... non capisco.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Ho usato una servlet perché sostanzialmente è una applicazione Web con pagine html dove inserisco i dati.. Inserisco dei record in una tabella manualmente ed ogni tot di tempo voglio creare un file csv per visualizzare la tabella con Excel... tipo, aggiorno gli ingressi ed ogni 30 minuti creo un file csv.. uso Quartz per prendere dimestichezza visto che dovrò utilizzarlo nuovamente per un altro progetto (avviare una servlet una volta al giorno).

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    55
    Ciao, quartz è abbastanza semplice, se non ti va di leggerti la documentazione ufficiale (tra l'altro abbastanza chiara) ti condiglio almeno questo http://www.html.it/articoli/quartz-esempio-pratico-1/ dove viene creato un job schedulato ogni 5 secondi. Ti basterà modificare la cron expression...
    ---
    EDIT: ho riletto meglio la tua richiesta iniziale: non devi usare una servlet per creare il file csv ma devi creare un Job (una classe che implementi l'interfaccia Job di quartz) e metterla all'interno della tua web application.

  5. #5
    Scusami se son stressante ma la cosa non mi funziona...
    Creo una classe MyJob che estende job con il metodo execute che stampa a video un semplice ciao.
    Poi creo una classe con il metodo main:

    codice:
    import java.util.Date;
    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
    import org.quartz.SimpleTrigger;
    import org.quartz.impl.StdSchedulerFactory;
    
    public class Esempio 
    {
        public static void main( String[] args ) throws Exception
        {
           	JobDetail job = new JobDetail();
        	job.setName("Felice");
        	job.setJobClass(MyJob.class);
        	
        	//configure the scheduler time
        	SimpleTrigger trigger = new SimpleTrigger();
        	trigger.setName("Fex");
        	trigger.setStartTime(new Date(System.currentTimeMillis() + 1000));
        	trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
        	trigger.setRepeatInterval(30000);
        	
        	//schedule it
        	Scheduler scheduler = new StdSchedulerFactory().getScheduler();
        	scheduler.start();
        	scheduler.scheduleJob(job, trigger);
    
        }
    }
    Ps. sto facendo tutto con eclipse come Dynamic Web Project.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    55
    Ciao, che vuol dire che non ti funziona? Ti da errori di runtime, errore in compilazione o nessun errore? Il codice sembra corretto... posta anche il codice del job.

  7. #7
    Ho effettuato alcune modifiche per non avere errori già in fase di scrittura del codice. Riporto le due classi:

    codice:
    import org.quartz.Job;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    
    public class MyJob implements Job {	
    	public MyJob(){
    	}
    	public void execute(JobExecutionContext context) throws JobExecutionExceptio{
    	     System.out.println("Ciao");
    	}
    
    }
    codice:
    import static org.quartz.JobBuilder.*;
    import static org.quartz.SimpleScheduleBuilder.*;
    
    import static org.quartz.TriggerBuilder.*;
    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerException;
    import org.quartz.SchedulerFactory;
    import org.quartz.Trigger;
    import org.quartz.impl.StdSchedulerFactory;
    
    public class SimpleExample{
    	public static void main(String [] args) throws SchedulerException{
    		 SchedulerFactory schedFactory = new StdSchedulerFactory();
    		 Scheduler sched = schedFactory.getScheduler();
    		JobDetail job = newJob(MyJob.class).withIdentity("MyJob", "group1") // name "myJob", group "group1"
    			      .build();
    			        
    			  // Trigger the job to run now, and then every 40 seconds
    			  Trigger trigger = newTrigger().withIdentity("myTrigger", "group1").startNow().withSchedule(simpleSchedule()
    			          .withIntervalInSeconds(40)
    			          .repeatForever())            
    			      .build();
    			        
    			  // Tell quartz to schedule the job using our trigger
    			  sched.scheduleJob(job, trigger);
    			  sched.shutdown(true);
    	}
    }
    Quando clicco sul pulsante per far girare il programma in console mi spunta questo messaggio:

    codice:
    Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
    	at org.quartz.listeners.SchedulerListenerSupport.<init>(SchedulerListenerSupport.java:40)
    	at org.quartz.impl.QuartzServer.<init>(QuartzServer.java:75)
    	at org.quartz.impl.QuartzServer.main(QuartzServer.java:182)
    Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
    	at java.net.URLClassLoader$1.run(Unknown Source)
    	at java.net.URLClassLoader$1.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.net.URLClassLoader.findClass(Unknown Source)
    	at java.lang.ClassLoader.loadClass(Unknown Source)
    	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    	at java.lang.ClassLoader.loadClass(Unknown Source)
    	... 3 more
    ... e naturalmente non vedo il "ciao" ogni 40 secondi...

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    55
    E' un problema di librerie (ti manca slf4j). Vedi nel pacchetto di quartz che hai scaricato, ci sono un bel po' di libererie da dover aggiungere al progetto.
    Che versione usi?

    PS per risolvere i ClassNotFoundException potrebbe esserti utile un sito tipo http://www.jarfinder.com/

  9. #9
    In allegato ho messo le librerie utilizzate
    Immagini allegate Immagini allegate

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    55
    Stai usando insieme due quartz diversi. Togli la versione 1.6

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.