开发者社区 问答 正文

请教,spring3.2+quartz2.1.6报如下错误如何解决?

class org.springframework.scheduling.quartz.JobDetailBean has interface org.quartz.JobDetail as super class

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
 
    <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" />
    </bean>
 
    <bean id="jobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
        <property name="jobClass" value="com.example.service.MyQuartzJobBean" />
        <property name="jobDataAsMap">
            <map>
                <entry key="simpleService">
                    <ref bean="simpleService" />
                </entry>
            </map>
        </property>
    </bean>
 
</beans>
?
public class MyQuartzJobBean extends QuartzJobBean {
 
    private SimpleService simpleService;
     
    @Autowired
    public void setSimpleService(SimpleService simpleService) {
        this.simpleService = simpleService;
    }
 
    @Override
    protected void executeInternal(JobExecutionContext jobexecutioncontext) throws JobExecutionException {
        Trigger trigger = jobexecutioncontext.getTrigger();
        String triggerName = trigger.getKey().getName();        
        simpleService.testMethod(triggerName);
    }
 
}

展开
收起
a123456678 2016-03-18 10:32:34 1851 分享 版权
1 条回答
写回答
取消 提交回答
  • Spring官网有说明其已支持Quartz 2.x,但是需要将Spring升级到3.1以上。由于Quartz 2.x修改了部分API,所以需要修改一下Quartz的配置。大体来说很简单,如下:

    1)升级Spring的jar包

    2)升级Quartz的jar包

    3)修改配置

    将CronTriggerBean修改为CronTriggerFactoryBean
    将JobDetailBean修改为JobDetailFactoryBean

    2019-07-17 19:06:04
    赞同 展开评论
问答分类:
问答地址: