异常如下:
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存到数据库