小编jur*_*rma的帖子

java.lang.IllegalStateException:绑定到线程的键没有值

在我们的生产服务器上并发请求负载相当大的时候,这个问题会时不时地发生(我想是这样,但不确定)。OpenSessionInViewFilter不幸的是,我们无法重现它以进行调试...正如您所看到的,我们在过滤器链中使用。DAO,没有注释。

我在 SpringSource Jira issues https://jira.springsource.org/browse/SPR-3693上读到了有关此效果的信息,但这似乎是一个遥远的固定错误,因为我们使用 Spring 版本3.1.2.RELEASE

我将不胜感激任何如何重现或修复此案例的想法。

事务定义没有什么特别的(但错误出现在getTransaction):

    DefaultTransactionDefinition td = new DefaultTransactionDefinition(TransactionDefinition.PROPAGATION_REQUIRED);
    td.setIsolationLevel(TransactionDefinition.ISOLATION_DEFAULT);
    TransactionStatus status = transactionManager.getTransaction(td);
Run Code Online (Sandbox Code Playgroud)

错误堆栈原因:

java.lang.IllegalStateException: No value for key [org.hibernate.impl.SessionFactoryImpl@1ff8c2a] bound to thread ["http-apr-83"-exec-3]
    at org.springframework.transaction.support.TransactionSynchronizationManager.unbindResource(TransactionSynchronizationManager.java:209)
    at org.springframework.orm.hibernate3.SpringSessionSynchronization.suspend(SpringSessionSynchronization.java:115)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.doSuspendSynchronization(AbstractPlatformTransactionManager.java:666)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.suspend(AbstractPlatformTransactionManager.java:569)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:363)
    at com.havilog.baltic.cheetah.services.RtMovementsServiceImpl.moveDone(RtMovementsServiceImpl.java:867)
    at sun.reflect.GeneratedMethodAccessor798.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(LazyInitProxyFactory.java:416)
    at org.apache.wicket.proxy.$Proxy8.moveDone(Unknown Source)
    at com.havilog.baltic.cheetah.rf.visual.pages.movements.refill.EnterQuantity.setLocationQty(EnterQuantity.java:378)
    at sun.reflect.GeneratedMethodAccessor820.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.wicket.util.lang.PropertyResolver$MethodGetAndSet.setValue(PropertyResolver.java:1185)
    at org.apache.wicket.util.lang.PropertyResolver$ObjectAndGetSetter.setValue(PropertyResolver.java:641)
    at org.apache.wicket.util.lang.PropertyResolver.setValue(PropertyResolver.java:143)
    at org.apache.wicket.model.AbstractPropertyModel.setObject(AbstractPropertyModel.java:186)
    at …
Run Code Online (Sandbox Code Playgroud)

spring hibernate database-connection transactions

5
推荐指数
0
解决办法
7561
查看次数