2012-12-21 16 views
6

Ho il seguente codice da eseguire su Apache-tomee, sto usando eclipse per la codifica e voglio eseguire il mio semplice lavoro di pianificazione usando l'annotazione @Schedule all'avvio dell'applicazione.EJB-3.1 @Startup e @Schedule anotation in Apache Tomee per l'esecuzione del timer

@Startup 
@Singleton 
public class ScheduleEJB { 
    private static int count = 0; 
    @Schedule(second="*/10", minute="*", hour="*", info="MyTimer") 
    public void execute() { 
     System.out.println("its running count..."+count); 
     count++; 
    } 
} 

Quando ho schierato questo codice su Tomee, è farmi seguente messaggio e in grado di eseguire il mio metodo di pianificazione execute() automaticamente all'avvio, dove come questo codice funziona bene in GlassFish, ma non ho intenzione usarlo o glassfish di jboss.

21 dicembre 2012 09:59:45 org.quartz.impl.StdSchedulerFactory istanziare
INFORMAZIONI: Utilizzo implementazione predefinita per ThreadExecutor
21 Dicembre 2012 09:59:45 org.quartz.core. SchedulerSignalerImpl
INFORMAZIONI: Initialized Scheduler Segnalatore di tipo: classe org.quartz.core.SchedulerSignalerImpl
21 dic 2012 09:59:45 org.quartz.core.QuartzScheduler
INFORMAZIONI: quarzo Scheduler v.2.1.6 creato .
Dec 21, 2012 9:59:45 AM org.quartz.simpl.RAMJobStore initialize
INFO: RAMJobStore inizializzato.
21 Dicembre 2012 09:59:45 org.quartz.core.QuartzScheduler inizializzare
INFORMAZIONI: Scheduler meta-dati: Quarzo Scheduler (v2.1.6) 'OpenEJB-TimerService-Scheduler' con instanceId 'OpenEJB'
Classe di pianificazione: 'org.quartz.core.QuartzScheduler' - esecuzione locale.
NON INIZIATO.
Attualmente in modalità standby.
Numero di lavori eseguiti: 0
Utilizzo del pool di thread 'org.apache.openejb.core.timer.DefaultTimerThreadPoolAdapter' - con 0 thread.
Utilizzo dell'archivio processi 'org.quartz.simpl.RAMJobStore' - che non supporta la persistenza. e non è in cluster.

21 dic, 2012 09:59:45 org.quartz.impl.StdSchedulerFactory istanziare
INFORMAZIONI: quarzo scheduler 'OpenEJB-TimerService-Scheduler' inizializzato da una proprietà un'istanza fornita esternamente.
21 Dicembre 2012 09:59:45 org.quartz.impl.StdSchedulerFactory istanziare
INFORMAZIONI: Quarzo versione scheduler: 2.1.6
21 Dicembre 2012 09:59:45 org.quartz.core.QuartzScheduler start
INFO: Scheduler OpenEJB-TimerService-Scheduler _ $ _ OpenEJB avviato.
21 Dicembre 2012 09:59:45 org.apache.openejb.assembler.classic.Assembler createApplication
INFORMAZIONI: Creato Ejb (distribuzione-id = ScheduleEJB, ejb-name = ScheduleEJB, container = My Singleton Container)
21 dicembre 2012 09:59:45 org.apache.openejb.assembler.classic.Assembler createApplication
INFORMAZIONI: Iniziato Ejb (distribuzione-id = ScheduleEJB, ejb-name = ScheduleEJB, container = My Singleton container)

risposta

1

Hai già dato un'occhiata alla pagina degli esempi di TomEE? Esiste un esempio simile che è attualmente in esecuzione.

http://openejb.apache.org/examples-trunk/schedule-methods/README.html

forse si potrebbe fare un tentativo e verificare ciò che è in realtà diversa con il vostro.

+1

sì, ho verificato la sua stessa cosa, ma il mio problema non era come codificarlo, era come sarò in grado di eseguire quel codice in tomee, e interessantemente quello che ho trovato la soluzione, che se ho eseguito il mio progetto distribuendo direttamente da eclipse su un server tomee in esecuzione, non avvierà il timer, ma quando ho appena distribuito l'app e riavviato il server è sufficiente avviare il timer, quindi non sono in grado di capire il motivo. – rykhan

0

Il codice funziona correttamente nell'ultima versione di TomEE. Qual era la tua versione?

+0

era apache-tomee-1.5.1-plus, sì funziona e funziona bene ora, ma per il quale devo riavviare tomee dopo aver distribuito il mio codice ... il motivo per cui non riesco a capire – rykhan