2016-11-14 20 views
0

調用緩存操作我獲得以下怪異異常,撥打電話時; 調用Session.flush()在休眠V 5.2.1 我用容器管理會話。ActionStatus.ABORT_ONLY>不是一個有效的狀態是在

什麼即時做錯了什麼?

@TransactionAttribute(TransactionAttributeType.REQUIRED) 
    public void insertOrUpdate(T entity) { 
.. 
crud().saveOrUpdate(entity); 

} 
public void saveOrUpdate(T entity) { 
     Session session = null; 
     try { 
      session = getSession(); 
      session.clear(); 
      session.saveOrUpdate(entity); 
      session.flush(); //Causes issue <----- 
     } catch (HibernateException ex) { 
      log.error("Error when save or update." + entity.getCode(), ex); 
     } 
    } 

異常

2016-11-12 00:00:02,960 ERROR [org.jboss.as.ejb3.invocation] (default task-59) WFLYEJB0034: EJB Invocation failed on component TankObservationService for method public void xx.lob2.service.autogen.TankObservationService.insertOrUpdate(xx.core.model.wetstock.analysis.TankObservation): javax.ejb.EJBTransactionRolledbackException: Transaction TransactionImple < ac, BasicAction: 0:ffffac110002:20d0e287:58255b3a:20c0f3 status: ActionStatus.ABORT_ONLY > is not in a valid state to be invoking cache operations on. 
     at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleInCallerTx(CMTTxInterceptor.java:159) 
     at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInCallerTx(CMTTxInterceptor.java:256) 
     at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:329) 
     at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:239) 
     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
     at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41) 
     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
     at org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(WaitTimeInterceptor.java:47) 
     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
     at org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(SecurityContextInterceptor.java:100) 
     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
     at org.jboss.as.ejb3.deployment.processors.StartupAwaitInterceptor.processInvocation(StartupAwaitInterceptor.java:22) 
     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
     at org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(ShutDownInterceptorFactory.java:64) 
     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
     at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:67) 
     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
     at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50) 
     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
     at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:54) 
     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
     at org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(ContextClassLoaderInterceptor.java:64) 
     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
     at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:356) 
     at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:636) 
     at org.jboss.invocation.AccessCheckingInterceptor.processInvocation(AccessCheckingInterceptor.java:61) 
     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 
     at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:356) 
     at org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(PrivilegedWithCombinerInterceptor.java:80) 
     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 

Caused by: java.lang.IllegalStateException: Transaction TransactionImple < ac, BasicAction: 0:ffffac110002:20d0e287:58255b3a:20c0f3 status: ActionStatus.ABORT_ONLY > is not in a valid state to be invoking cache operations on. 
     at org.infinispan.interceptors.TxInterceptor.enlist(TxInterceptor.java:395) 
     at org.infinispan.interceptors.TxInterceptor.enlistWriteAndInvokeNext(TxInterceptor.java:358) 
     at org.infinispan.interceptors.TxInterceptor.visitPutKeyValueCommand(TxInterceptor.java:221) 
     at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:78) 
     at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:99) 
     at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:114) 
     at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:83) 
     at org.infinispan.commands.AbstractVisitor.visitPutKeyValueCommand(AbstractVisitor.java:43) 
     at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:78) 
     at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:335) 
     at org.infinispan.cache.impl.CacheImpl.executeCommandAndCommitIfNeeded(CacheImpl.java:1672) 
     at org.infinispan.cache.impl.CacheImpl.putInternal(CacheImpl.java:1121) 
     at org.infinispan.cache.impl.CacheImpl.put(CacheImpl.java:1111) 
     at org.infinispan.cache.impl.DecoratedCache.put(DecoratedCache.java:453) 
     at org.infinispan.cache.impl.AbstractDelegatingCache.put(AbstractDelegatingCache.java:291) 
     at org.hibernate.cache.infinispan.access.TxInvalidationCacheAccessDelegate.update(TxInvalidationCacheAccessDelegate.java:63) 
     at org.hibernate.cache.infinispan.entity.ReadWriteAccess.update(ReadWriteAccess.java:29) 
     at org.hibernate.action.internal.EntityUpdateAction.cacheUpdate(EntityUpdateAction.java:222) 
     at org.hibernate.action.internal.EntityUpdateAction.execute(EntityUpdateAction.java:196) 
     at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:582) 
     at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:456) 
     at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:337) 
     at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39) 
     at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1397) 
     at com.cdi.crud.infra.Crud.saveOrUpdate(Crud.java:610) 
     at com.cdi.crud.infra.CrudService.insertOrUpdate(CrudService.java:85) 
     at xx.lob2.service.autogen.TankObservationService.insertOrUpdate(TankObservationService.java:444) 
     at sun.reflect.GeneratedMethodAccessor301.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.jboss.as.ee.component.ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptor.java:52) 
     at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) 

回答

2

本次交易已經提交或回滾時,你叫flush()。似乎你使用容器管理的事務,你是否明確地交易了事務?

這可能是出現了一個以前的失敗,標誌着該交易爲只回滾。

另一種可能性是,該交易已超時(事務將自動回滾後,默認情況下1分鐘回),但我認爲錯誤信息是不同的。

+0

感謝。是的,我們使用容器管理的交易。 – Ratha

相關問題