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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值