Domanda

persone buone. Sto cercando di utilizzare al quarzo con la primavera in modo molto semplice progetto gestito da maven.So nel modulo in cui la classe lavoro mycron è ho incluso una classe principale Java ad essa solo per vedere l'output del lavoro del testo e nuova data. ecco la mia config primavera:

<!--Scheduling-->
<!--Job-->
    <bean id="projUpdater" class="org.springframework.scheduling.quartz.JobDetailBean">
        <property name="jobClass" value="com.myproject.utilscheduling.quartz.ProjUpdaterCronImpl" />
    </bean>
<!---End of Jobs-->
<!--Triggers-->
    <bean id="regularUpdateTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="projUpdater"/>
        <property name="cronExpression" value="30 1 * * * ?"/>
    </bean>
<!--End ofTriggers-->
<!--Scheduler Factory-->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
        <list>
            <ref bean="regularUpdateTrigger"/>
        </list>
    </property>
</bean>
<!--End of Scheduler Factory-->
<!--End of Scheduling-->

e qui è la categoria di lavoro

public class ProjUpdaterCronImpl extends QuartzJobBean {

public ProjUpdaterCronImpl() {
}


protected void executeInternal (JobExecutionContext ctx) throws JobExecutionException {
    System.out.println("[JOB] " + new Date() + "hello");
}

}

Questa è la classe principale

public class NewMain {

/**
 * @param args the command line arguments
 */
 public static void main(String[] args) {
    System.out.println("starting job");
 }

}

così nella mia comprensione verrà avviato il lavoro dopo 1mn30s e pubblicato sul console.I'm wrong.i affrontato coppie o gli errori che ho risolto così posso tranquillamente supporre che non v'è alcun errore nel file di configurazione in primavera dal momento che ci è nessuno quando si costruisce e running.So cosa ho fatto di sbagliato o che cosa ho dimenticato di fare?

La seconda preoccupazione dal momento che mi sto costringendo a fare la fine test driven come faccio forse testare una classe il lavoro cron? Grazie per la lettura

È stato utile?

Soluzione

Il tuo espressione cron

<property name="cronExpression" value="30 1 * * * ?"/>

in realtà configura il grilletto per sparare una volta ogni ora a 1 minuto e 30 secondi dopo l'ora.

suggerimento

di Zoidberg per utilizzare MethodInvokingJobDetailFactoryBean permette di codificare il vostro lavoro cron come POJO, rendendo più semplice per eseguire il test.

Altri suggerimenti

Prova questo per il bean di lavoro.

<bean id="projUpdater" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="registeredObject" />
        <property name="targetMethod" value="methodNameInObject" />
    </bean>

Dove il vostro registeredObject è un fagiolo registrati nella configurazione primavera da qualche parte. E il metodo è un metodo che esiste in tale oggetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top