`
wangcheng
  • 浏览: 1466990 次
  • 性别: Icon_minigender_1
  • 来自: 青岛人在北京
社区版块
存档分类
最新评论

解决Spring中使用quartz发生NotSerializableException methodInvoker的问题

    博客分类:
  • java
阅读更多

Spring2.5 + quartz1.6.5 发生如下异常

 

Caused by: org.quartz.JobPersistenceException: Couldn't store job: Unable to serialize JobDataMap for insertion into database because the value of property 'methodInvoker' is not serializable: org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean [See nested exception: java.io.NotSerializableException: Unable to serialize JobDataMap for insertion into database because the value of property 'methodInvoker' is not serializable: org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean]
        at org.quartz.impl.jdbcjobstore.JobStoreSupport.storeJob(JobStoreSupport.java:1105)

 

这是Spring的Bug, 解决方法 http://jira.springframework.org/browse/SPR-3797
下载BeanInvokingJobDetailFactoryBean.java 和 MethodInvokingJobDetailFactoryBean.java
在Spring配置文件中使用如下方式

 

<bean id="exampleBean" class="example.ExampleImpl"> 
</bean>

<bean id="exampleTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
	<!-- Execute exampleBean.fooBar() at 2am every day -->
	<property name="cronExpression" value="0 0 2 * * ?" />
	<property name="jobDetail"> 
		<bean class="frameworkx.springframework.scheduling.quartz.BeanInvokingJobDetailFactoryBean"> 
			<property name="concurrent" value="false"/>
			<property name="targetBean" value="exampleBean" />
			<property name="targetMethod" value="fooBar" />
			<property name="arguments"> 
				<list> 
					<value>arg1Value</value>
					<value>arg2Value</value> 
				<list> 
			</property> 
		</bean> 
	</property> 
</bean> 

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
	<property name="triggers"> 
		<list> 
			<ref bean="exampleTrigger" /> 
		</list> 
	</property> 
</bean>
 

附件是BeanInvokingJobDetailFactoryBean.java 和 MethodInvokingJobDetailFactoryBean.java

 

参考 http://soulshard.iteye.com/blog/337886

分享到:
评论
2 楼 k_kid9157 2015-05-08  
亲测可用 特来感谢LZ分享!
1 楼 hnbcjzj 2014-11-13  
这两个类下载后放什么地方,原来的quartz是一个jar,肯定放不进去,是不是需要建一个跟他的包集一样的路径放?

相关推荐

    spring2与quartz在Web整合

    Spring 2 和 Quartz 是两个在 Java Web 开发中非常重要的框架。Spring 是一个全面的开源应用框架,提供了依赖注入(DI)、面向切面编程(AOP)以及丰富的数据访问和事务管理功能。Quartz,则是一个功能强大的作业...

    Spring中的Quartz配置-Spring-定时器-java定时器.doc

    Spring 中的 Quartz 配置-Spring 定时器-...我们学习了 Quartz 的基本概念,了解了如何在 Spring 配置文件中定义 Quartz 的 bean,并了解了 Cron 表达式的使用。最后,我们总结了 Quartz 的优点,了解了它的强大功能。

    spring2.0 使用 Quartz 必备包

    spring2.0 使用 Quartz 必备包 里面有: quartz-all-1.5.2.jar spring-support.jar 适合:SSH框架 spring2.0 strut2.0 hibernate3.2等

    关于spring中quartz的配置

    在Spring框架中集成Quartz是一款常见的任务调度解决方案,它允许开发者在应用中...通过以上步骤,你就可以在Spring中成功配置并使用Quartz进行任务调度了。注意,实际应用中还需要根据具体需求调整配置和Job的实现。

    spring3整合quartz1.8和spring3整合quartz2.2两个版本示例

    1. **引入依赖**:在项目中添加 Quartz 和 Spring 相关的库,确保版本兼容。对于 Quartz 1.8,你需要导入相应的 JAR 包,例如 `quartz.jar` 和 `slf4j-api.jar` 等。 2. **配置 Quartz**:在 `quartz.properties` ...

    springtask 和 quartz +ssh简单示例

    springtask 和 quartz +ssh简单示例springtask 和 quartz +ssh简单示例springtask 和 quartz +ssh简单示例springtask 和 quartz +ssh简单示例

    quartz和spring-quartz

    而Spring-Quartz则是Spring框架对Quartz的集成,它使得在Spring应用中使用Quartz变得更加方便。 Quartz的核心概念包括Job(作业)、Trigger(触发器)和Calendar(日历)。Job是实际要执行的任务,Trigger定义了Job...

    Spring中Quartz的配置

    在Spring中使用Quartz进行任务调度时,首先需要创建一个被调度的类。示例代码如下: ```java package com.kay.quartz; public class QuartzJob { public void work() { System.out.println("Quartz的任务调度!...

    SpringQuartz的使用文档

    Spring对Quartz进行了集成,使其更易于在Spring应用程序中使用。Spring提供了`FactoryBean`类,如`SchedulerFactoryBean`,用于创建和管理Quartz的`Scheduler`实例。这使得我们可以利用Spring的依赖注入(DI)和管理...

    Spring中使用Quartz(二)

    本篇将深入探讨如何在Spring项目中使用Quartz,以及与TimerTask的区别。 1. **TimerTask vs Quartz** - **TimerTask**: 是Java标准库中的一个类,适用于简单定时任务的执行。它使用单线程模型,如果一个任务执行...

    spring+quartz demo

    Spring 提供了与 Quartz 集成的模块,使得在 Spring 应用程序中使用 Quartz 更加便捷,包括 Job 实例的管理、触发器的配置以及对 Quartz Scheduler 的控制。 在这个 "spring+quartz demo" 中,我们可以学习到如何将...

    在spring中使用quartz

    在Spring框架中集成Quartz是一个常见的任务调度解决方案,它允许开发者定义定时任务并灵活地管理它们。Quartz是一个开源的作业调度库,可以用来在Java应用程序中安排任务执行。Spring通过其优秀的DI(依赖注入)特性...

    spring boot + quartz 动态管理 分布式

    在IT行业中,Spring Boot和Quartz是两个非常重要的框架,它们在企业级应用开发中扮演着关键角色。Spring Boot简化了Spring应用的初始搭建以及开发过程,提供了开箱即用的功能,而Quartz则是一个强大的任务调度库,常...

    完美解决多应用服务器负载均衡环境下spring quartz同一定时任务重复执行问题

    7. **Spring整合**:在Spring中配置Quartz,通过`SchedulerFactoryBean`来创建和管理Scheduler实例。通过`@DisallowConcurrentExecution`注解可以防止同一任务在单个实例中并发执行,但这个注解并不适用于集群环境。...

    spring3.0+quartz-1.6.0定时

    Spring 3.0 和 Quartz 1.6.0 结合使用是企业级应用中常见的定时任务解决方案。Spring 是一个强大的Java应用程序框架,提供了依赖注入、AOP(面向切面编程)以及众多其他功能,而Quartz则是一个开源的作业调度框架,...

    quartz整合springbatch动态集群定时实现mysql参考

    通过这个项目,开发者可以学习到如何在分布式环境中使用Quartz进行定时任务调度,以及如何利用Spring Batch进行批量数据处理。同时,了解如何将这些组件与MySQL数据库相结合,实现高可用性和可扩展性。对于希望构建...

    spring之定时任务实现(spring-task和quartz等不同方式)

    配置Quartz通常需要在Spring配置文件中声明`SchedulerFactoryBean`,并设置相关的bean。例如: ```xml &lt;bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"&gt; &lt;!-- 这里...

    spring的quartz使用实例

    在Spring中,通常会使用`org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean`来包装一个带有@Scheduled注解的方法。 5. **Cron表达式** CronTrigger允许使用Cron表达式来定义触发时间,如...

    Java_Spring与Quartz的整合

    在Java Spring中整合Quartz,可以利用Spring的管理能力来控制Quartz的作业和触发器,使得整个系统更加灵活和易于维护。以下将详细介绍如何进行Spring与Quartz的整合。 1. **集成步骤** - 添加依赖:首先,确保在...

    spring3配置quartz定时任务

    要在Spring 3中使用Quartz,首先需要在项目中添加Quartz库的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.quartz-scheduler &lt;artifactId&gt;quartz &lt;version&gt;2.3.2 ``` ...

Global site tag (gtag.js) - Google Analytics