配置-SpringBatch 和 quartz定时,quartz调用多个springbatchjob异常,

问题描述

SpringBatch 和 quartz定时,quartz调用多个springbatchjob异常,

异常如下:
2015-05-12 11:49:30.046 [startQuertz_Worker-5] ERROR org.quartz.core.JobRunShell - Job DEFAULT.busBatchJobDetail threw an unhandled Exception:
org.springframework.dao.CannotSerializeTransactionException: PreparedStatementCallback; SQL [INSERT into BATCH_JOB_EXECUTION(JOB_EXECUTION_ID, JOB_INSTANCE_ID, START_TIME, END_TIME, STATUS, EXIT_CODE, EXIT_MESSAGE, VERSION, CREATE_TIME, LAST_UPDATED) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]; ORA-08177: 无法连续访问此事务处理
; nested exception is java.sql.SQLException: ORA-08177: 无法连续访问此事务处理

at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:267) ~[spring-jdbc-4.0.0.RELEASE.jar:4.0.0.RELEASE]
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:73) ~[spring-jdbc-4.0.0.RELEASE.jar:4.0.0.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:658) ~[spring-jdbc-4.0.0.RELEASE.jar:4.0.0.RELEASE]
以下是.xml配置
 <bean id="jobLauncher"
      class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
    <property name="jobRepository" ref="jobRepository"/>
</bean>

<!--// Spring batch  持久化机制  默认id为jobRepository-->
<bean id="jobRepository"
      class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="transactionManager" ref="transactionManager"/>
    <property name="lobHandler" ref="lobHandler"/>
    <property name="isolationLevelForCreate" value="ISOLATION_READ_COMMITTED"/>
</bean>
<!--// mapJobRepository 不将JobExecution和jobExectution存入数据库-->
<!--<bean id="jobRepository"-->
      <!--class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean"-->
      <!--lazy-init="true" autowire-candidate="false"/>-->
<!--//stopping, restarting, or summarizing a Job-->
<bean id="jobOperator"
      class="org.springframework.batch.core.launch.support.SimpleJobOperator">
    <property name="jobLauncher" ref="jobLauncher"/>
    <property name="jobExplorer" ref="jobExplorer"/>
    <property name="jobRepository" ref="jobRepository"/>
    <property name="jobRegistry" ref="jobRegistry"/>
</bean>
<!--// 读取jobRepository类,只读。-->
<bean id="jobExplorer"
      class="org.springframework.batch.core.explore.support.JobExplorerFactoryBean">
    <property name="dataSource" ref="dataSource"/>
</bean>
<!--//用来记载多个jobs,进行注册 并可以修改相应job的参数-->
<bean id="jobRegistry"
      class="org.springframework.batch.core.configuration.support.MapJobRegistry"/>

<bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler"/>

<!--必须配置ExecutionContextPromotionListener才能往jobExecutionContext中写-->
<bean id="promotionListener" class="org.springframework.batch.core.listener.ExecutionContextPromotionListener">
    <property name="keys" value="size"/>
</bean>

同时我还想将JobExecution和jobExectution存到数据库
时间: 2024-08-26 01:12:19

配置-SpringBatch 和 quartz定时,quartz调用多个springbatchjob异常,的相关文章

Quartz定时被二次触发的问题

其中<Host/>告诉tomcat,在启动的时候加载webapps下的所有项目工程文件,<Context/>又让tomcat再加载了一遍(一般情况下配置<Context/>,主要是由于想域名访问时将工程名去掉的原因配置),这种情况下会导致工程中的quartz定时被两次触发,执行两次.   <Host/>里面的改成 autoDeploy="false" deployOnStartup="false" 这样就可以避免tom

Spring Boot集成持久化Quartz定时任务管理和界面展示

前言 本文是对之前的一篇文章Spring+SpringMVC+mybatis+Quartz整合代码部分做的一个修改和补充, 其中最大的变化就是后台框架变成了Spring Boot. 本工程所用到的技术或工具有: Spring Boot Mybatis Quartz PageHelper VueJS ElementUI MySql数据库 正文 配置 本例中仍然是使用mysql数据库作为Quartz任务持久化的存储载体.对于如何在Mysql数据库中建立表,在上一篇Spring+SpringMVC+m

DotNetCore跨平台~Quartz定时单次任务

之前写过一篇文件<DotNetCore跨平台~Quartz热部署的福音-监控文件夹的变化>,今天主要把框架优化了一下,支持外部触发,并支持外部将参数以JobDataMap形式进行输入,然后在咱们的Job里进行使用它,故称参数化任务. Quartz使用场景: 定时单次任务:在未来某个时间去执行一次 定点任务 :在某个时间去执行,可以是轮询的 周期任务 :按某个时间间隔去轮询执行 今天说的外部触发的任务是指第一种,即在未来某个时间点去执行,并且只执行一次.说一下思路,这种任务某个JobBase的子

LINUX CRONTAB定时计划调用SHELL备份数据库

1.体系:采用LINUX CRONTAB定时计划调用SHELL,执行RMAN [oracle@DB]$ crontab -l 0 1 * * 0 /u01/bak/rman/script/inc0.sh 0 1 * * 1 /u01/bak/rman/script/inc2.sh 0 1 * * 2 /u01/bak/rman/script/inc2.sh 0 1 * * 3 /u01/bak/rman/script/inc2.sh 0 1 * * 4 /u01/bak/rman/script/

nginx 配置cxf webservice代理,客户端调用出错

问题描述 nginx 配置cxf webservice代理,客户端调用出错 在windows上,使用nginx 配置了cxf webservice的代理,但是在代码中使用JaxWsProxyFactoryBean方式去调用的时候无法调用通,但是若使用实际的地址可以调通.配置如下: upstream local_tomcat{ server 10.10.13.142:8550; server 10.1.241.182:8550 weight=5; } server { listen 8083; s

如何配置服务器使其定时获取。。

问题描述 有没有朋友做过:在服务器上定时运行获取其他网站内容,并写入数据库的程序?目前用正则表达式能够达到目的,但是不知道如何配置服务器使其定时获取..望高手指点..PS:虚拟空间是购买的网上空间. 解决方案 解决方案二:你看下这个你就明白了.http://zhidao.baidu.com/question/2705101.html

sql server定时作业调用Kettle job出错的快速解决方法_MsSql

错误信息: Unable to list jar files in plugin folder 'C:\Windows\system32\config\systemprofile\.kettle\plugins' Unable to get VFS File object for filename 'C:\Windows\system32\config\systemprofile\.kettle\plugins' : Could not find file with URI "C:\Window

sql server定时作业调用Kettle job出错的快速解决方法

错误信息: Unable to list jar files in plugin folder 'C:\Windows\system32\config\systemprofile\.kettle\plugins' Unable to get VFS File object for filename 'C:\Windows\system32\config\systemprofile\.kettle\plugins' : Could not find file with URI "C:\Window

vs2012-软件启动问题:打不开VS,显示&amp;amp;quot;调用的目标发生异常”

问题描述 软件启动问题:打不开VS,显示"调用的目标发生异常" 点击vs2012打不开,以前能正常打开,现在就直接弹出提示框显示:"调用的目标发生异常",根据网上的方法,改了环境变量(不知道是哪个,我用户和系统都改),重启电脑,还是打不开.删掉重装什么的都不行,求帮忙要怎么搞?谢谢! 解决方案 请问楼主是怎么解决的啊?