`
giraffeql
  • 浏览: 17815 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

quartz NotSerializableException

阅读更多

本文是为了解决发布quartz定时任务时出现NotSerializableException(不能被序列化异常)的问题。

 

先看看错误代码:

Caused by: java.io.NotSerializableException: Unable to serialize JobDataMap for insertion into database because the value of property 'simpleService' is not serializable: mips.encodeRelationManage.service.impl.TBarcodePackedServiceImpl
	at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.serializeJobData(StdJDBCDelegate.java:3355)
	at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.insertJobDetail(StdJDBCDelegate.java:512)
	at org.quartz.impl.jdbcjobstore.JobStoreSupport.storeJob(JobStoreSupport.java:1126)
	... 56 more

 

错误提示说JobDataMap不能被序列化。

 

我在很多地方也搜索到类似的问题,比较集中的说法是spring的bug和兼容性问题。

参阅:

1. 求助:quarz+spring启动报错的问题: http://bbs.csdn.net/topics/390375985

2. 解决Spring中使用quartz发生NotSerializableException methodInvoker的问题: http://wangcheng.iteye.com/blog/469344 

3. Spring+Quartz 集群: http://soulshard.iteye.com/blog/337886/

 

但今天我要说的可不是这个问题。

我们在看看错误提示:JobDataMap不能被序列化,因为simpleService不能被序列化,而更上一层的原因是TBarcodePackedServiceImpl(这是我的一个业务service实现类)不能被序列化。

 

不知道到这里你是否会有灵光一现的感觉?

熟悉序列化机制的朋友都知道,序列化对象时,会把他的属性都一并序列化。这样就会形成一个链式结构,逐级序列化到基本数据类型。

而有时我们并不想让它一直序列化下去,所以只要将不需要序列化的属性添加transient修饰符即可。

例如:

protected transient Log logger = LogFactory.getLog(this.getClass());

private transient TBarcodePackedServiceI tBarcodePackedService;

 

记住:transient ——临时的

 

好了,希望对各位有帮助。

 

0
0
分享到:
评论

相关推荐

    quartz quartz-1.8.6 dbTables 建表sql

    Quartz 是一个开源的作业调度框架,广泛应用于Java应用程序中,用于执行定时任务。它提供了丰富的API和灵活性,使得开发者可以方便地定义、安排和管理各种任务。版本1.8.6是Quartz的一个稳定版本,它包含了对数据库...

    quartz-2.2.3版本的quartz初始化sql语句

    Quartz是一款广泛使用的开源任务调度框架,它允许开发者在Java应用程序中定义和执行定时任务。在Quartz 2.2.3版本中,初始化数据库是使用Quartz的关键步骤,因为Quartz依赖于一个持久化存储来保存作业和触发器的信息...

    quartz-2.3.2-API文档-中文版.zip

    赠送jar包:quartz-2.3.2.jar; 赠送原API文档:quartz-2.3.2-javadoc.jar; 赠送源代码:quartz-2.3.2-sources.jar; 赠送Maven依赖信息文件:quartz-2.3.2.pom; 包含翻译后的API文档:quartz-2.3.2-javadoc-API...

    quartz_2.3.0 SQL脚本

    Quartz 是一个开源的作业调度框架,广泛应用于Java应用程序中,用于执行定时任务。它允许开发者灵活地定义作业和触发器,实现复杂的时间调度。在2.3.0这个版本中,Quartz 提供了针对不同数据库系统的初始化脚本,...

    Android studio下的quartz工程

    **Android Studio下的Quartz工程详解** Quartz是一个开源的作业调度框架,广泛应用于Java环境中的任务调度。在Android Studio中使用Quartz,可以为应用程序添加定时执行的任务功能,例如定期发送通知、更新数据或者...

    关于spring中quartz的配置

    在Spring框架中集成Quartz是一款常见的任务调度解决方案,它允许开发者在应用中安排定时任务的执行。Quartz是一个开源的作业调度框架,可以用来在Java应用程序中安排复杂的作业任务。以下将详细介绍如何在Spring中...

    quartz创建表sql

    Quartz 是一个开源的作业调度框架,广泛应用于Java企业级应用中,用于自动化任务执行,如定时触发工作流、发送邮件、数据同步等。在Quartz的部署和配置过程中,为了存储作业和触发器的信息,我们需要在关系型数据库...

    quartz-2.3.0-API文档-中文版.zip

    赠送jar包:quartz-2.3.0.jar; 赠送原API文档:quartz-2.3.0-javadoc.jar; 赠送源代码:quartz-2.3.0-sources.jar; 赠送Maven依赖信息文件:quartz-2.3.0.pom; 包含翻译后的API文档:quartz-2.3.0-javadoc-API...

    Quartz.NET 官方源码及演示例子

    Quartz.NET 是一个开源的作业调度框架,它允许开发者在.NET环境中定义和执行定时任务。这个框架的强大之处在于它的灵活性和可扩展性,使得开发者能够创建复杂的调度逻辑,以满足各种自动化需求。以下是对Quartz.NET...

    Quartz 线程池

    Quartz 是一个开源的作业调度框架,它允许开发者在 Java 应用程序中安排任务的执行。线程池是 Quartz 的核心组成部分,用于管理和执行触发的任务。本文将深入探讨 Quartz 线程池的工作原理、配置以及如何在实际项目...

    quartz scheduler 入门教程

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

    Quartz所需jar包

    Quartz是一款开源的作业调度框架,它允许开发者在Java应用程序中定义和执行复杂的定时任务。在Java应用开发中,Quartz常被用来自动化各种后台任务,如数据清理、报告生成等。"Quartz所需jar包"是使用Quartz库进行...

    Quartz 批量下载源码

    Quartz 批量下载源码,Quartz 批量下载源码Quartz 批量下载源码Quartz 批量下载源码Quartz 批量下载源码Quartz 批量下载源码Quartz 批量下载源码Quartz 批量下载源码Quartz 批量下载源码Quartz 批量下载源码

    quartz-2.3.2-API文档-中英对照版.zip

    赠送jar包:quartz-2.3.2.jar; 赠送原API文档:quartz-2.3.2-javadoc.jar; 赠送源代码:quartz-2.3.2-sources.jar; 赠送Maven依赖信息文件:quartz-2.3.2.pom; 包含翻译后的API文档:quartz-2.3.2-javadoc-API...

    quartz和spring-quartz

    Quartz和Spring-Quartz是两个在Java世界中广泛使用的定时任务管理框架。Quartz是一个开源的作业调度框架,允许应用程序定义和调度任务在特定时间执行。而Spring-Quartz则是Spring框架对Quartz的集成,它使得在Spring...

    quartz实例,quartz入门例子

    Quartz是一款开源的作业调度框架,它允许开发者创建、组织和执行计划任务。这个实例是为初学者设计的,用于帮助理解Quartz的基本概念和使用方式。在MyEclipse 6.0.1环境下,你可以直接运行这个Spring整合Quartz的...

    quartz官方数据库大全

    Quartz是一个功能丰富的开源作业调度库,几乎可以集成在任何Java应用程序中 - 从最小的独立应用程序到最大的电子商务系统。Quartz可用于创建简单或复杂的计划,以执行数十,数百甚至数万个作业; 将任务定义为标准...

    Quartz 定时WebForm和WinForm使用的dll

    Quartz是一个开源的作业调度框架,它允许开发者在应用程序中定义和执行定时任务。这个标题“Quartz 定时WebForm和WinForm使用的dll”暗示了我们将在WebForm和WinForm应用中使用Quartz来实现定时功能。在.NET环境中,...

    quartz实例sqlserver数据库连接

    Quartz是一款开源的作业调度框架,它允许开发者在应用程序中安排任务执行,比如定时执行某个方法或服务。在“quartz实例sqlserver数据库连接”这个主题中,我们主要讨论如何配置Quartz与SQL Server数据库进行交互,...

    Quartz.net-定时任务 Demo

    Quartz.NET是一款强大的开源作业调度框架,用于在.NET环境中创建和执行定时任务。这个"Quartz.net-定时任务 Demo"示例将展示如何利用Quartz.NET来安排代码在指定时间后执行,比如几十分钟后的场景。 Quartz.NET的...

Global site tag (gtag.js) - Google Analytics