Configurando o schedule do Spring para rodar um método em determinado horário

3 respostas
P

Pessoal,

Bom dia !!!
Será que alguém pode me ajudar ???!!
Preciso rodar um método em um determinado horário do dia, e sei que o Spring consegue fazer isto…

Será que alguém pode me dar uma mãozinha com isto ??!!
Vou caçar por aqui, mas se alguém souber como configuro o Spring para isto ficaria agradecido…

Valeu pessoal…
Abs,

3 Respostas

T

inclui isso no seu arquivo de conf do spring:

<!-- Configurações do Quartz -->
    
    <!-- Configuracao do Quartz  -->
    <bean id="myJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
  		<property name="targetObject" ref="myScheduler" />
  		<property name="targetMethod" value="execute" /><!-- O metodo que existe na  SuaClasse.execute -->
  		<!-- Para não permitir a execução concorrente do Scheduler -->
  		<property name="concurrent" value="false" />
	</bean>
	
	<bean id="myScheduler" class="seu.pacote.SuaClasse"/>
	
	<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
    	<property name="jobDetail" ref="myJobDetail" />
    	<!-- Executa a cada hora -->
    	<property name="cronExpression" value="0 0 * * * ?" />
	</bean>
	
	<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
	    <property name="triggers">
	        <list>
	            <ref bean="cronTrigger" />
	        </list>
	    </property>
	</bean>

Espero ter ajudado.

P

Amigo,

Fico agradecido…!!!
Só que deu um erro avisando que não foi definido o Simpletrigger como um bean…

Será que só com esta configuração no escopo de meu arquivo do Spring daria certo ??!!
Ou preciso implementar mais algo…
Segue :

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:webflow="http://www.springframework.org/schema/webflow-config"
    xmlns:faces="http://www.springframework.org/schema/faces"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                           http://www.springframework.org/schema/tx
                           http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
                           http://www.springframework.org/schema/aop
                           http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
                           http://www.springframework.org/schema/context
                           http://www.springframework.org/schema/context/spring-context-2.5.xsd
                           http://www.springframework.org/schema/webflow-config
                           http://www.springframework.org/schema/webflow-config/spring-webflow-config-2.0.xsd
                           http://www.springframework.org/schema/faces
                           http://www.springframework.org/schema/faces/spring-faces-2.0.xsd">

Se puder me ajudar, fico agradecidíssimo…

Precisava progarmar este método para rodar ainda amanhã…

Segue a configuração que fiz junto ao seu exemplo :

<bean id="runAlertCustomers" class="br.com.webtraffic.big.controller.RunAlertCustomersController"/>
    
    <bean id="alertCustomerJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject" ref="runAlertCustomers"/>
		<property name="targetMethod" value="runAlertCustomers.execute"/>
		<property name="concurrent" value="false" />
	</bean>

	<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
		<property name="jobDetail" ref="alertCustomerJob" />
		<property name="cronExpression" value="0 0 12 * * ?" />
	</bean>
    
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref bean="simpleTrigger" />
				<ref bean="cronTrigger" />
			</list>
		</property>
	</bean>

Abs,

P

Opa amigão,

Agradecidíssimo…Consegui resolver !!!

O problema é que estava me referenciando assim a classe de uma propriedade :

.     <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
          <property name="triggers">  
.             <list>  
.                 <ref bean="simpleTrigger" />  
                   <ref bean="cronTrigger" />  
               </list>  
         </property>  
      </bean>

Daí foi só retirar esta referência :

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
	    <property name="triggers">  
	        <list>  
	            <ref bean="cronTrigger" />  
	        </list>  
	    </property>  
	</bean>

…que tudo funcionaou perfeitamente !!!

Valeu meu amigo…
Abs,

Criado 16 de setembro de 2011
Ultima resposta 16 de set. de 2011
Respostas 3
Participantes 2