2016-11-14 1 views
0

Я получаю следующее странное исключение: при вызове; session.flush() in Hibernate 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

Смежные вопросы