如何使Spring批处理在Java EE容器中发挥出色

时间:2014-10-21 09:31:22

标签: java spring-batch websphere-8

我试图在Java EE容器中使用Spring Batch(Websphere 8.0) 我到目前为止工作,但我希望它使用容器提供的数据源和事务管理器。 (我使用的是derby数据库而不是默认的hsql-db)

我将spring-batch-core.jar中的baseContext.xml复制到了我的类路径,并更改了dataSource和transactionManager的bean。 (见下文)

似乎能够启动事务并访问数据库,但随后超时(“无法获取IDENTITY值”)失败。

有没有人设法使用带有弹簧批的Java EE数据源?我在网上找不到任何内容,春季批处理文档甚至没有包含“JEE”这个词。

这是我改编的baseContext.jar。 dataSource和事务管理器的原始bean定义已经被注释掉了:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:batch="http://www.springframework.org/schema/batch"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
                    http://www.springframework.org/schema/beans/spring-beans.xsd
                    http://www.springframework.org/schema/batch
                    http://www.springframework.org/schema/batch/spring-batch.xsd
                    http://www.springframework.org/schema/jee
                    http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
                    http://www.springframework.org/schema/tx
                    http://www.springframework.org/schema/tx/spring-tx.xsd
                    http://www.springframework.org/schema/jdbc
                    http://www.springframework.org/schema/jdbc/spring-jdbc.xsd">

    <tx:jta-transaction-manager />

    <jee:jndi-lookup id="dataSource" jndi-name="jbatchSampleDB" expected-type="javax.sql.DataSource" lookup-on-startup="true" cache="true" />

    <batch:job-repository data-source="dataSource" id="jobRepository"
        transaction-manager="transactionManager" table-prefix="${batch.table.prefix}"/>

    <bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
        <property name="jobRepository" ref="jobRepository"/>
    </bean>

    <bean id="batchJobOperator" class="org.springframework.batch.core.launch.support.SimpleJobOperator">
        <property name="jobExplorer" ref="jobExplorer"/>
        <property name="jobLauncher" ref="jobLauncher"/>
        <property name="jobRepository" ref="jobRepository"/>
        <property name="jobRegistry" ref="jobRegistry"/>
    </bean>

    <bean id="jobExplorer" class="org.springframework.batch.core.explore.support.JobExplorerFactoryBean">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!--  bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${batch.jdbc.driver}" />
        <property name="url" value="${batch.jdbc.url}" />
        <property name="username" value="${batch.jdbc.user}" />
        <property name="password" value="${batch.jdbc.password}" />
        <property name="testWhileIdle" value="${batch.jdbc.testWhileIdle}"/>
        <property name="validationQuery" value="${batch.jdbc.validationQuery}"/>
    </bean -->

    <!--  bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean -->

    <!--  Initialise the database if enabled: -->
    <jdbc:initialize-database data-source="dataSource" enabled="${batch.data.source.init}" ignore-failures="DROPS">
        <jdbc:script location="${batch.drop.script}"/>
        <jdbc:script location="${batch.schema.script}"/>
    </jdbc:initialize-database>

    <bean id="jobParametersConverter" class="org.springframework.batch.core.jsr.JsrJobParametersConverter">
        <constructor-arg ref="dataSource"/>
    </bean>

    <bean id="jobRegistry" class="org.springframework.batch.core.configuration.support.MapJobRegistry"/>

    <bean id="placeholderProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>classpath:batch-${ENVIRONMENT:derby}.properties</value>
            </list>
        </property>
        <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
        <property name="ignoreResourceNotFound" value="true" />
        <property name="ignoreUnresolvablePlaceholders" value="false" />
        <property name="order" value="1" />
    </bean>
</beans>

这些是我得到的错误:

[21.10.14 11:00:27:961 CEST] 0000002a WSRdbXaResour E   DSRA0302E:  XAException occurred.  Error code is: XA_RBTIMEOUT (106).  Exception is: XA_RBTIMEOUT : Fehler beim Ausführen von XAResource.end(). Der Server hat Folgendes zurückgegeben: XA_RBTIMEOUT
[21.10.14 11:00:28:050 CEST] 0000002a FfdcProvider  W com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: FFDC Incident emitted on C:\Program Files (x86)\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\ffdc\server1_df9126ba_14.10.21_11.00.27.962173746269389570625.txt com.ibm.ejs.j2c.XATransactionWrapper.end 417
[21.10.14 11:00:28:050 CEST] 0000002a XATransaction E   J2CA0027E: An exception occurred while invoking end on an XA Resource Adapter from DataSource jbatchSampleDB, within transaction ID {XidImpl: formatId(57415344), gtrid_length(36), bqual_length(54),
data(0000014931eeb4a80000000247b5d940930c671bd3532a7d4a65bea7645c1bb4338195240000014931eeb4a80000000247b5d940930c671bd3532a7d4a65bea7645c1bb433819524000000010000000000000000000000000001)} : org.apache.derby.client.am.XaException: XA_RBTIMEOUT : Fehler beim Ausführen von XAResource.end(). Der Server hat Folgendes zurückgegeben: XA_RBTIMEOUT
    at org.apache.derby.client.net.NetXAResource.throwXAException(Unknown Source)
    at org.apache.derby.client.net.NetXAResource.end(Unknown Source)
    at com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl.end(WSRdbXaResourceImpl.java:623)
    at com.ibm.ejs.j2c.XATransactionWrapper.end(XATransactionWrapper.java:608)
    at com.ibm.ws.Transaction.JTA.JTAResourceBase.end(JTAResourceBase.java:254)
    at com.ibm.tx.jta.impl.RegisteredResources.sendEnd(RegisteredResources.java:1152)
    at com.ibm.tx.jta.impl.RegisteredResources.distributeEnd(RegisteredResources.java:1128)
    at com.ibm.tx.jta.impl.TransactionImpl.internalRollback(TransactionImpl.java:1992)
    at com.ibm.tx.jta.impl.TransactionImpl.internalRollback(TransactionImpl.java:1957)
    at com.ibm.tx.jta.impl.TransactionImpl.rollback(TransactionImpl.java:1359)
    at com.ibm.ws.tx.jta.TransactionImpl.rollback(TransactionImpl.java:3608)
    at com.ibm.ws.tx.jta.TranManagerImpl.rollback(TranManagerImpl.java:478)
    at com.ibm.tx.jta.impl.TranManagerSet.rollback(TranManagerSet.java:206)
    at com.ibm.ws.uow.UOWManagerImpl.uowRollback(UOWManagerImpl.java:829)
    at com.ibm.ws.uow.EmbeddableUOWManagerImpl.uowEnd(EmbeddableUOWManagerImpl.java:855)
    at com.ibm.ws.uow.UOWManagerImpl.uowEnd(UOWManagerImpl.java:777)
    at com.ibm.ws.uow.EmbeddableUOWManagerImpl.runUnderNewUOW(EmbeddableUOWManagerImpl.java:814)
    at com.ibm.ws.uow.EmbeddableUOWManagerImpl.runUnderUOW(EmbeddableUOWManagerImpl.java:366)
    at org.springframework.transaction.jta.WebSphereUowTransactionManager.execute(WebSphereUowTransactionManager.java:290)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:279)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.batch.core.repository.support.AbstractJobRepositoryFactoryBean$1.invoke(AbstractJobRepositoryFactoryBean.java:172)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
    at com.sun.proxy.$Proxy52.createJobInstance(Unknown Source)
    at org.springframework.batch.core.jsr.launch.JsrJobOperator.start(JsrJobOperator.java:630)
    at vwg.jbatchtest.ejb.BatchMonitorEJB.startJob(BatchMonitorEJB.java:32)
    at vwg.jbatchtest.ejb.EJSLocalNSFBatchMonitorEJB_88c81e47.startJob(EJSLocalNSFBatchMonitorEJB_88c81e47.java)
    at vwg.jbatchtest.ui.controller.BatchMonitorUIController.getStatus(BatchMonitorUIController.java:19)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:611)
    at org.apache.webbeans.intercept.InterceptorHandler.invoke(InterceptorHandler.java:297)
    at org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.invoke(NormalScopedBeanInterceptorHandler.java:98)
    at vwg.jbatchtest.ui.controller.BatchMonitorUIController_$$_javassist_1.getStatus(BatchMonitorUIController_$$_javassist_1.java)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:611)
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:91)
    at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:55)
    at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:142)
    at org.apache.el.parser.AstValue.getValue(AstValue.java:174)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:283)
    at org.apache.webbeans.el.WrappedValueExpression.getValue(WrappedValueExpression.java:68)
    at org.apache.myfaces.view.facelets.el.TagValueExpression.getValue(TagValueExpression.java:85)
    at javax.faces.component._DeltaStateHelper.eval(_DeltaStateHelper.java:243)
    at javax.faces.component.UIOutput.getValue(UIOutput.java:71)
    at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getValue(RendererUtils.java:343)
    at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getStringValue(RendererUtils.java:295)
    at org.apache.myfaces.renderkit.html.HtmlLabelRenderer.encodeBegin(HtmlLabelRenderer.java:126)
    at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:502)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:613)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:622)
    at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1364)
    at org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:263)
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59)
    at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:85)
    at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:240)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1230)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:779)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1071)
    at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:1385)
    at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:194)
    at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:654)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1071)
    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3774)
    at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:981)
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:453)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:515)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:306)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:277)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1702)
Caused by: org.apache.derby.client.am.SqlException: Fehler beim Ausführen von XAResource.end(). Der Server hat Folgendes zurückgegeben: XA_RBTIMEOUT
    at org.apache.derby.client.net.NetXAResource.xaRetValErrorAccumSQL(Unknown Source)
    ... 89 more
.
[21.10.14 11:00:28:087 CEST] 0000002a FfdcProvider  W com.ibm.ws.ffdc.impl.FfdcProvider logIncident FFDC1003I: FFDC Incident emitted on C:\Program Files (x86)\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\ffdc\server1_df9126ba_14.10.21_11.00.28.0529176547779395125373.txt com.ibm.ws.tx.jta.JTAXAResourceImpl.end 307
[21.10.14 11:00:28:088 CEST] 0000002a BusinessExcep E   CNTR0020E: EJB threw an unexpected (non-declared) exception during invocation of method "startJob" on bean "BeanId(jbatchTestAppl-EAR#jbatchTestAppl-EJB.jar#BatchMonitorEJB, 31EEAC2F-0149-4000-E000-15B00AB49C66)". Exception data: javax.batch.operations.JobStartException: org.springframework.dao.DataAccessResourceFailureException: Could not obtain IDENTITY value; nested exception is java.sql.SQLTransactionRollbackException: Eine Sperre konnte innerhalb der vorgegebenen Zeit nicht angefordert werden.
    at org.springframework.batch.core.jsr.launch.JsrJobOperator.start(JsrJobOperator.java:633)
    at vwg.jbatchtest.ejb.BatchMonitorEJB.startJob(BatchMonitorEJB.java:32)
    at vwg.jbatchtest.ejb.EJSLocalNSFBatchMonitorEJB_88c81e47.startJob(EJSLocalNSFBatchMonitorEJB_88c81e47.java)
    at vwg.jbatchtest.ui.controller.BatchMonitorUIController.getStatus(BatchMonitorUIController.java:19)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:611)
    at org.apache.webbeans.intercept.InterceptorHandler.invoke(InterceptorHandler.java:297)
    at org.apache.webbeans.intercept.NormalScopedBeanInterceptorHandler.invoke(NormalScopedBeanInterceptorHandler.java:98)
    at vwg.jbatchtest.ui.controller.BatchMonitorUIController_$$_javassist_1.getStatus(BatchMonitorUIController_$$_javassist_1.java)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:611)
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:91)
    at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:55)
    at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:142)
    at org.apache.el.parser.AstValue.getValue(AstValue.java:174)
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:283)
    at org.apache.webbeans.el.WrappedValueExpression.getValue(WrappedValueExpression.java:68)
    at org.apache.myfaces.view.facelets.el.TagValueExpression.getValue(TagValueExpression.java:85)
    at javax.faces.component._DeltaStateHelper.eval(_DeltaStateHelper.java:243)
    at javax.faces.component.UIOutput.getValue(UIOutput.java:71)
    at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getValue(RendererUtils.java:343)
    at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getStringValue(RendererUtils.java:295)
    at org.apache.myfaces.renderkit.html.HtmlLabelRenderer.encodeBegin(HtmlLabelRenderer.java:126)
    at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:502)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:613)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:622)
    at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1364)
    at org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:263)
    at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:59)
    at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:85)
    at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:240)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1230)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:779)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1071)
    at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:1385)
    at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:194)
    at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:654)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1071)
    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3774)
    at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:981)
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:453)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:515)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:306)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:277)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1702)
Caused by: org.springframework.dao.DataAccessResourceFailureException: Could not obtain IDENTITY value; nested exception is java.sql.SQLTransactionRollbackException: Eine Sperre konnte innerhalb der vorgegebenen Zeit nicht angefordert werden.
    at org.springframework.jdbc.support.incrementer.DerbyMaxValueIncrementer.getNextKey(DerbyMaxValueIncrementer.java:160)
    at org.springframework.jdbc.support.incrementer.AbstractDataFieldMaxValueIncrementer.nextLongValue(AbstractDataFieldMaxValueIncrementer.java:128)
    at org.springframework.batch.core.repository.dao.JdbcJobInstanceDao.createJobInstance(JdbcJobInstanceDao.java:108)
    at org.springframework.batch.core.repository.support.SimpleJobRepository.createJobInstance(SimpleJobRepository.java:303)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:611)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:98)
    at org.springframework.transaction.interceptor.TransactionAspectSupport$1.doInTransaction(TransactionAspectSupport.java:285)
    at org.springframework.transaction.jta.WebSphereUowTransactionManager$UOWActionAdapter.run(WebSphereUowTransactionManager.java:347)
    at com.ibm.ws.uow.EmbeddableUOWManagerImpl.runUnderNewUOW(EmbeddableUOWManagerImpl.java:787)
    at com.ibm.ws.uow.EmbeddableUOWManagerImpl.runUnderUOW(EmbeddableUOWManagerImpl.java:366)
    at org.springframework.transaction.jta.WebSphereUowTransactionManager.execute(WebSphereUowTransactionManager.java:290)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:279)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.batch.core.repository.support.AbstractJobRepositoryFactoryBean$1.invoke(AbstractJobRepositoryFactoryBean.java:172)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
    at com.sun.proxy.$Proxy52.createJobInstance(Unknown Source)
    at org.springframework.batch.core.jsr.launch.JsrJobOperator.start(JsrJobOperator.java:630)
    ... 63 more
Caused by: java.sql.SQLTransactionRollbackException: Eine Sperre konnte innerhalb der vorgegebenen Zeit nicht angefordert werden.
    at org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown Source)
    at org.apache.derby.client.am.SqlException.getSQLException(Unknown Source)
    at org.apache.derby.client.am.Statement.executeQuery(Unknown Source)
    at com.ibm.ws.rsadapter.jdbc.WSJdbcStatement.pmiExecuteQuery(WSJdbcStatement.java:1723)
    at com.ibm.ws.rsadapter.jdbc.WSJdbcStatement.executeQuery(WSJdbcStatement.java:1014)
    at org.springframework.jdbc.support.incrementer.DerbyMaxValueIncrementer.getNextKey(DerbyMaxValueIncrementer.java:145)
    ... 87 more
Caused by: org.apache.derby.client.am.SqlException: Eine Sperre konnte innerhalb der vorgegebenen Zeit nicht angefordert werden.
    at org.apache.derby.client.am.Statement.completeSqlca(Unknown Source)
    at org.apache.derby.client.net.NetStatementReply.parseOpenQueryError(Unknown Source)
    at org.apache.derby.client.net.NetStatementReply.parseOPNQRYreply(Unknown Source)
    at org.apache.derby.client.net.NetStatementReply.readOpenQuery(Unknown Source)
    at org.apache.derby.client.net.StatementReply.readOpenQuery(Unknown Source)
    at org.apache.derby.client.net.NetStatement.readOpenQuery_(Unknown Source)
    at org.apache.derby.client.am.Statement.readOpenQuery(Unknown Source)
    at org.apache.derby.client.am.Statement.flowExecute(Unknown Source)
    at org.apache.derby.client.am.Statement.executeQueryX(Unknown Source)
    ... 91 more

最后几个例外的德语错误信息(“Eine Sperre konnte innerhalb der vorgegebenen Zeit nicht angefordert werden。”)大致翻译为“在指定时间内无法获得锁定”

0 个答案:

没有答案