spring quartz xml中配置任务

使用spring quartz集群时,有一些任务已经存在,可以通过配置的方式将任务持久化到数据库中

<bean name="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource"/>
        </property>
        <property name="applicationContextSchedulerContextKey" value="applicationContextKey"/>
        <property name="configLocation" value="classpath:quartz.properties"/>
        <property name="triggers">
        	<list>
        		<ref bean="trigger1"/>
        	</list>
        </property>	
    </bean> 
    <!-- 原测试内容 -->
    
    <bean id="jobDetail1" class="org.springframework.scheduling.quartz.JobDetailBean">
    	<property name="jobClass"> 
			<value>com.xlwzsoft.timepieceTask.task.DBClusterQuartzJobBean</value> 
		</property>
		<property name="jobDataAsMap">   
			<map>   
				<entry key="targetObject" value="timeManagerServiceImpl"/>  
				<entry key="targetMethod" value="execute"/> 
				<entry key="taskType" value="cronType"></entry>
			</map>
		</property> 
    </bean>
    <bean id="trigger1" class="org.springframework.scheduling.quartz.CronTriggerBean">
        <property name="jobDetail" ref="jobDetail1"/>
        <property name="cronExpression" value="0/5 * * ? * * *"/>
    </bean>    
//com.xlwzsoft.timepieceTask.task.DBClusterQuartzJobBean的内容:
public class DBClusterQuartzJobBean extends QuartzJobBean {  
    protected final Log logger = LogFactory.getLog(getClass());  
    private String targetObject;  
    private String targetMethod;
    private String taskInfoId;
    private String taskType;
    private String taskTime;
    private ApplicationContext ctx;  
  
    @Override  
    protected void executeInternal(JobExecutionContext context)  
            throws JobExecutionException {  
        try {  
            logger.info("bean:"+targetObject);
//            targetObject=context.getMergedJobDataMap().getString("targetObject");
//            targetMethod=context.getMergedJobDataMap().getString("staticMethod");
            //强转类型 由spring中获得要调用的bean类
            Job otargetObject = (Job)SpringUtil.getBean(targetObject);//ctx.getBean(targetObject);  
//            Method m = null;  
            //执行类的execute方法
        	otargetObject.execute(context);
        	//判断当前任务是否执行下一次
        	executeNext();
//                m = otargetObject.getClass().getMethod(targetMethod, JobExecutionContext.class);  
//                m.invoke(otargetObject, context);  
        } catch (Exception e) {
        	logger.info(e.getMessage());
        	exceptionError(e.getMessage());
        }  
    }

jobDataMap中的数据在DBClusterQuartzJobBean中需声明,并且实现get/set方法,方可在方法中获得,targetObject所指向的bean,需要实现Job接口,并且targetMethod必须为execute
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值