日前在项目中使用Quartz进行任务调度,在使用过程中遇到了一个问题:
在项目中,用户通过界面支持实现任务的添加,而任务调度器通过监控数据库的任务列表来实现任务调度操作.为了实现任务的可持续化存储,我采用了:
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
Quartz自行管理模式。
当前使用的数据源的连接方式:
org.quartz.dataSource.myDS.jndiURL =dataSource
org.quartz.dataSource.myDS.jndiAlwaysLookup = true
org.quartz.dataSource.myDS.java.naming.factory.initial=com.app.plantask.jndi.MyFactory
由于我的任务调度是有一个任务在系统中重复执行(其工作就是监控数据库的任务列表并控制任务的调度),在计划任务的添加时报以下错误:
log4j:WARN Please initialize the log4j system properly.
<2009-6-25 é???10ê±45·?41?? CST> <Error> <HTTP> <BEA-101017> <[weblogic.servlet.
internal.WebAppServletContext@1906773 - appName: 'webapp', name: 'webapp', conte
xt-path: '/webapp'] Root cause of ServletException.
org.quartz.JobPersistenceException: Couldn't store job: Driver's Blob representa
tion is of an unsupported type: weblogic.jdbc.wrapper.Blob_weblogic_jdbc_base_Ba
seBlob [See nested exception: java.sql.SQLException: Driver's Blob representatio
n is of an unsupported type: weblogic.jdbc.wrapper.Blob_weblogic_jdbc_base_BaseB
lob]
at org.quartz.impl.jdbcjobstore.JobStoreSupport.storeJob(JobStoreSupport
.java:1108)
at org.quartz.impl.jdbcjobstore.JobStoreSupport$4.execute(JobStoreSuppor
t.java:1075)
at org.quartz.impl.jdbcjobstore.JobStoreSupport$40.execute(JobStoreSuppo
rt.java:3688)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLoc
k(JobStoreSupport.java:3760)
at org.quartz.impl.jdbcjobstore.JobStoreTX.executeInLock(JobStoreTX.java
:93)
Truncated. see log file for complete stacktrace
java.sql.SQLException: Driver's Blob representation is of an unsupported type: w
eblogic.jdbc.wrapper.Blob_weblogic_jdbc_base_BaseBlob
at org.quartz.impl.jdbcjobstore.oracle.OracleDelegate.writeDataToBlob(Or
acleDelegate.java:649)
at org.quartz.impl.jdbcjobstore.oracle.OracleDelegate.insertJobDetail(Or
acleDelegate.java:210)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.storeJob(JobStoreSupport
.java:1102)
at org.quartz.impl.jdbcjobstore.JobStoreSupport$4.execute(JobStoreSuppor
t.java:1075)
at org.quartz.impl.jdbcjobstore.JobStoreSupport$40.execute(JobStoreSuppo
rt.java:3688)
Truncated. see log file for complete stacktrace
>
<2009-6-25 é???10ê±45·?41?? CST> <Error> <Kernel> <BEA-000802> <ExecuteRequest f
ailed
java.lang.NullPointerException.
java.lang.NullPointerException
at com.sailing.framework.utils.ExceptionUtil.getMessage(ExceptionUtil.ja
va:23)
at jsp_servlet.__error._jspService(__error.java:355)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run
(StubSecurityHelper.java:225)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecuri
tyHelper.java:127)
Truncated. see log file for complete stacktrace
在查找相关资料后:
将当前的JNDI连接方式修改为直连的方式:
org.quartz.dataSource.myDS.driver = oracle.jdbc.OracleDriver
org.quartz.dataSource.myDS.URL = jdbc:oracle:thin:@XXXXXXX:1521:dhcs
org.quartz.dataSource.myDS.user = XXXXX
org.quartz.dataSource.myDS.password = XXXXX
org.quartz.dataSource.myDS.maxConnections = 5
org.quartz.dataSource.myDS.validationQuery = select table_name from user_tables
再次添加的时候就成功了。
分享到:
相关推荐
在多应用服务器负载均衡环境下,Spring Quartz定时任务的重复执行问题是一个常见的挑战。Spring Quartz是一个强大的、开源的作业调度框架,允许开发者定义和执行复杂的定时任务。然而,当多个服务器实例并行运行时,...
Quartz 是一个开源的作业调度框架,用于在 Java 应用...虽然在特定的 cron 表达式问题上遇到了挑战,但通常 Quartz 已经能满足大部分的定时需求。对于更复杂的需求,开发者可以深入研究源代码或寻找其他的解决方案。
5. **异常处理**:在任务执行过程中,可能会遇到各种异常,如何捕获并处理这些异常,确保任务的稳定性和可靠性,也是监控管理的重要一环。 6. **持久化策略**:Quartz支持数据库持久化,可以将Job和Trigger的信息...
Quartz 是一个开源的作业调度框架,用于在 Java 应用程序中实现复杂的时间调度任务。它允许开发者定义定时任务并将其与应用程序的业务逻辑相结合,实现自动化执行。Spring 框架则是一个广泛使用的 Java 应用开发框架...
在Spring应用中添加Quartz支持,你需要在`pom.xml`或`build.gradle`文件中引入Quartz的依赖,比如`quartz-all.jar`。接着,在Spring的配置文件(如`applicationContext.xml`)中,定义一个`SchedulerFactoryBean`来...
在构建企业级应用时,经常会遇到需要执行定时任务的需求,比如数据备份、报表生成、邮件发送等。本项目就是基于Spring MVC、Mybatis、Quartz和Swagger实现的一个定时任务管理系统,旨在提供一种灵活且可配置的方式来...
6. **源码分析**:对于开发者来说,拥有源码意味着可以深入了解Quartz的工作机制,遇到问题时能够直接查看源码找到解决方案,或者根据需求进行定制开发。 7. **示例项目**:官方提供的示例代码可以帮助开发者快速...
在处理数据任务时,可能会遇到各种异常。因此,应设计合理的异常处理逻辑,例如记录日志、发送报警邮件,甚至可以设置重试策略,避免因一次失败而影响整个任务流程。 7. **灵活性和扩展性** 由于原始项目是为财务...
.NET Core使用Quartz执行调度任务是一项常见的需求,尤其是在需要定期执行特定业务逻辑的场景中。Quartz.Net是一个功能丰富的开源任务调度框架,适用于多种.NET环境,包括.NET Core。本文将深入探讨如何在.NET Core ...
- **故障恢复机制**:在任务执行过程中遇到严重错误时,能够通知应用系统,并尝试重新执行。 #### 三、Quartz的工作原理 Quartz的核心概念包括Job和Trigger。Job代表需要执行的任务本身,而Trigger则是控制Job何时...
对于开发者来说,理解源码可以帮助解决在使用过程中遇到的复杂问题。 “工具”标签可能意味着博客还提到了一些与Quartz相关的实用工具或插件,例如用于监控和管理任务的Web界面,或者用于简化Quartz配置的脚本工具...
Quartz是一款广泛应用于Java开发中的开源任务调度框架,它提供了丰富的调度功能,使得开发者能够方便地为应用程序添加定时任务。Maven则是一个项目管理和综合工具,帮助开发者管理依赖、构建项目,是Java开发的标准...
在使用过程中,可能会遇到如任务并发控制、任务状态跟踪、故障转移等问题,这些问题都需要根据具体需求和环境来解决。例如,使用`DisallowConcurrentExecution`注解防止同一Job实例的并发执行,使用`StatefulJob`...
在实际应用中,你可能还会遇到如负载均衡、任务同步、节点间的通信等问题,需要对Quartz的API和原理有深入理解才能更好地应对。通过阅读官方文档、源码分析和实践操作,可以进一步掌握Quartz集群的精髓,提高系统...
10. **API与版本兼容性**: Quartz提供了丰富的API供开发者使用,不同版本的Quartz可能有不同的特性和API变更,因此在升级时需要注意兼容性问题。 以上是对"quartz作业调度测试"项目的简要解析,通过该项目,你可以...
在集成 Quartz 进行任务调度时,通常会遇到以下需求: 1. **在接口平台实现任务调度**:这意味着你需要将 Quartz 集成到你的服务接口中,让外部系统可以通过调用这些接口来启动、停止或修改定时任务。这通常涉及到...
Quartz是一款功能强大的开源任务调度库,常用于Java应用程序中执行...在实际项目中,你可能会遇到更复杂的场景,例如需要根据业务需求动态添加、修改或删除任务,这时候就需要充分利用Quartz提供的API和特性来实现。
为了使用Quartz框架,首先需要创建一个Java工程,并在项目中添加Quartz的核心库以及其他必要的第三方库。这些库通常位于`<QUARTZ_HOME>/lib/core`和`<QUARTZ_HOME>/lib/optional`目录下,例如`quartz-<version>.jar`...
这个项目还包含了"项目说明",可能包括如何部署应用、如何查看任务执行情况以及可能遇到的问题和解决办法。"项目授权码.txt"可能包含访问或使用此项目的授权信息,确保合法使用。 通过这种方式,我们可以利用Spring...