`
bocar
  • 浏览: 5280 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Quartz的 autowire="byName" 设置

阅读更多
最近做的一个项目很简单,SSH的组合,所有的配置都用了最简单的配置,比如dataSource、sessionFactory等,需要开发一个定时发送邮件提醒的功能,使用Quartz小菜一碟。
但问题来了,测试时报错:org.quartz.impl.jdbcjobstore.LockException: Failure obtaining db row lock: Table 'chem.qrtz_locks' doesn't exist [See nested exception: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table 'chem.qrtz_locks' doesn't exist]
在论坛里搜索了一下。
有人说:
引用
因为这个时候你的quartz是jobstore用的HDBCJobStore模式,此时会从数据库查询任务。
你如果只是测试的话,可以在你的classpath下加一个文件quartz.properties,并且加上一句org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore 。就会采取内存存储的模式了。

但是我查看了Quartz包中的默认quartz.properties文件,org.quartz.jobStore.class的属性已经是org.quartz.simpl.RAMJobStore,除非你要改成HDBCJobStore的模式才需要重新设置。
还有人说:
引用
另外可能是自动装配惹得祸,存在dataSource这个bean就自动用数据库的状态维持了。

这句话讲到了点子上。我在配置文件中为了注入的方便都使用了default-autowire="byName" ,而Quartz在启动时如果发现了"dataSource"会自动注入变成HDBCJobStore的模式,那么我删掉Quartz配置文件<beans />中的default-autowire="byName"。果然程序顺利运行,Quartz也能正常定时启动。
但是这样Quartz配置文件中的注入关系都要明文手动注入了,小的项目到无所谓,大点的项目就麻烦了。何不在"dataSource"的名称上做文章呢?
于是将"dataSource"改成"myDataSource",Quartz配置文件<beans />中依然使用 default-autowire="byName"。OK!程序正常启动,Quartz正确定时启动,而且autowire="byName"也能自动的注入。
分享到:
评论
1 楼 xly_971223 2008-11-05  
sh it 果然是autowire惹得祸
耽误了我一下午的时间

相关推荐

    Spring2.0+quartz1.8定时执行任务内含Cron表达式生成器

    -- 调用频率设置 每天上午2点和下午5点 cron表达式 --&gt; &lt;bean id="runTime" class="org.springframework.scheduling.quartz.CronTriggerBean"&gt; &lt;property name="jobDetail"&gt; &lt;ref bean="runSyn" /&gt; ...

    quartz scheduler 入门教程

    quartz scheduler 入门教程 Quartz Scheduler 是一种功能丰富、开源的任务调度程序库,可以在任何 Java 程序中使用。它可以用来创建简单或者复杂的执行次数可以达成千上万的任务。任务可以是任何 Java 可以做的事情...

    Spring整合任务调度框架Quartz

    &lt;bean autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"&gt; &lt;property name="triggers"&gt; &lt;ref local="overdueRecallTrigger" /&gt; ``` 这种方式的优点是简单易用,但也存在...

    Spring3.2.4+Quartz2.2.0 Demo

    &lt;bean name="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"&gt; &lt;property name="triggers"&gt; &lt;ref bean="myJobTrigger" /&gt; ...

    关于spring中quartz的配置

    org.quartz.scheduler.instanceName = MyScheduler org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX org.quartz.jobStore.dataSource = myDS org.quartz.dataSource.myDS.driver = ...

    spring mvc quartz 动态设置时间

    【Spring MVC + Quartz 动态设置时间】 在Java Web开发中,Spring MVC和Quartz库经常被用来构建灵活的任务调度系统。Quartz是一个强大的、开放源码的作业调度框架,可以用于创建、调度和执行重复任务。而Spring MVC...

    Quartz在Spring中动态设置cronExpression

    标题与描述均聚焦于“Quartz在Spring中动态设置cronExpression”的主题,这涉及到了两个主要的开源项目:Quartz,一个强大的作业调度框架;以及Spring,一个广泛使用的Java平台框架,用于构建企业级应用程序。Quartz...

    Spring Quartz如何动态配置时间

    在 Quartz 任务调度器中,我们需要更新任务触发器的时间设置,以便于任务可以根据新的时间规则来执行。 6. RESCHEDULE THE JOB 最后,我们需要重新安排任务的执行,以便于 Quartz 任务调度器可以根据新的时间规则...

    Quartz 的Cron时间设置.doc

    ### Quartz的Cron时间设置详解 #### 一、Cron表达式概述 Cron表达式是一种用于配置定时任务执行频率的格式化字符串。在Quartz框架中,Cron表达式通常用于Trigger对象来定义Job执行的时间规则。一个标准的Cron表达式...

    SpringBoot-Quartz.rar

    org.quartz.scheduler.instanceName = DefaultQuartzScheduler #集群模式 #org.quartz.scheduler.instanceId = AUTO org.quartz.scheduler.rmi.export = false org.quartz.scheduler.rmi.proxy = false org.quartz....

    spring多个定时任务quartz配置

    例如,设置Quartz自动启动: ``` spring.quartz.auto-startup=true ``` 或者配置CronTrigger: ``` spring.quartz.jobs[0].triggers[0].cron=0 0/5 * * * ? ``` 这样,你就可以在Spring Boot应用中实现多个定时任务...

    SpringBoot 整合Quartz(集群)实现定时任务调度

    对于集群环境,还需要设置`org.quartz.scheduler.instanceName`和`org.quartz.jobStore.isClustered`为集群模式: ```properties # application.properties 示例 quartz.jobStore.tablePrefix=QRTZ_ quartz....

    封装通用的Spring3+Struts2+MyBatis3的CRUD+条件分页查询,Spring+Quartz调度,FunctionCharts图像化工具

    &lt;bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"&gt; &lt;property name="triggers"&gt; &lt;ref bean="getPolicyTime"/&gt; &lt;/beans&gt;

    spring+quartz动态设置定时时间

    本篇文章将深入探讨如何在Spring与Quartz结合的环境中动态设置定时时间。 首先,Spring框架提供了方便的依赖注入和AOP(面向切面编程)功能,使得集成其他库变得更加容易。Quartz是一个强大的作业调度框架,它可以...

    定时任务quartz实现分组串行并行动态配置

    如果需要限制同一组内的并行执行,可以通过设置Scheduler的属性`org.quartz.threadPool.class`为`org.quartz.simpl.SimpleThreadPool`,然后调整`threadCount`属性来控制并发线程数量。 5. **动态更新配置**:一旦...

    quartz在Spring中的配置

    &lt;property name="quartzProperties"&gt; &lt;prop key="org.quartz.jobStore.class"&gt;org.quartz.impl.jdbcjobstore.JobStoreTX &lt;prop key="org.quartz.jobStore.tablePrefix"&gt;QRTZ_ &lt;prop key="org.quartz.jobStore....

    Spring中Quartz的配置

    &lt;bean id="startQuartz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"&gt; &lt;property name="triggers"&gt; &lt;ref bean="doTime"/&gt; ``` 在这段配置中...

    springboot2.3集成quartz定时任务持久化数据库,支持集群

    这个过程的关键在于配置Quartz Scheduler,设置数据库连接,以及确保任务在多节点环境中能够正确协调。 首先,Quartz是一个开源的作业调度框架,它允许开发者定义定时任务并按计划执行。Spring Boot与Quartz的集成...

    quartz内部表.sql

    quartz内部表.sql。

Global site tag (gtag.js) - Google Analytics