spring quartz xml中配置任务

来源:互联网 发布:解析视频软件 编辑:程序博客网 时间:2024/05/22 15:39
使用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
原创粉丝点击