2016-11-14 2 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つの可能性は、トランザクションがタイムアウトしていることです(トランザクションはデフォルトで1分後に自動的にロールバックされます)。ただし、エラーメッセージが異なって見えると思います。

+0

ありがとうございました。はい、コンテナ管理のトランザクションを使用します。 – Ratha

関連する問題