2017-08-09 192 views
2

したがって、Wildfly 10 Application Serverで2つのxa-datsourcesが設定されており、Hibernate ORM 5.2.9を使用しています。また、DBはPostgresです。9.6トランザクションが別のスレッド例外でロールバックされました

私のアプリケーションでは、2つのループ用にネストされたEJBがあり、ネストされたループのすべての反復でテーブルからデータを読み取る必要があります。しかし、しばらくしてから、この例外が発生しています。

org.eveloper.JJTransactionRolledbackException:トランザクションが別のスレッドでロールバックされました!

私はこれがなぜ起こっているのか理解できません。私はDBに接続するためにJDBCを使用し、すべて正常に動作する小さな概念証明アプリケーションがあります。

EDIT Iが挙げ例外がスローされた後に、このスタックトレースがある:

12:39:07319は、[com.arjuna.ats.arjuna](デフォルトのタスク7) ARJUNA012077に警告: WFLYEJB0034:コンポーネントでのEJB呼び出しが失敗しました ejb(EJBの起動に失敗しました) /メソッドの計算リソースpublic void com.actuariado.smartsolve.services.api.calculation.Calcul ationResource.calculateFinancial(org.jboss.resteasy.plugins.providers.multipart.MultipartFormDataInput) はcom.actuariado.smartsolve.exceptions.AppExceptionをスロー: javax.ejb.EJBTransactionRolledbackException:トランザクションはorg.jboss.as.ejb3でバック 圧延しました。 org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTxでorg.jboss.as.ejb3.tx.CMTTxInterceptor.endTransaction(CMTTxInterceptor.java:117) でtx.CMTTxInterceptor.handleEndTransactionException(CMTTxInterceptor.java:137) ( CMTTxInterceptor.java:279) at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:327) 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 .InterceptorContext.properties(InterceptorContext.java:340) :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.com.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:54) org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)org.jboss.invocation.InterceptorContext.proceedでorg.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(ContextClassLoaderInterceptor.java:64) で(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.in vocation.AccessCheckingInterceptor.processInvocation org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:356)で(AccessCheckingInterceptor.java:61)org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340)で でorg.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.javaでorg.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:340) でorg.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(PrivilegedWithCombinerInterceptor.java:80) : 61) at org.jboss.as.ee.component.ViewService $ View.invoke(ViewService.java:198) at org.jboss.as.ee.component.ViewDescription $ 1.processInvocation(ViewDescription.java:185) org.jboss.invocatioでorg.jboss.as.ee.component.ProxyInvocationHandler.invoke(ProxyInvocationHandler.javaでorg.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) でn.InterceptorContext.proceed(InterceptorContext.java:340) : 73)sun.reflect.NativeMethodAccessorImpl.invokeでsun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) でcom.actuariado.smartsolve.services.api.calculation.CalculationResource $$$ view200.calculateFinancial(不明 出所) で java.lang.reflect.Method.invoke(Method.java:498)でsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)で(NativeMethodAccessorImpl.java:62) org.jboss.resteasy.coreで.MethodInjectorImpl。呼び出し(MethodInjectorImpl.java:139)org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:295)で org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:249)で でorg.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:236) (org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:402) 、org.jboss.resteasy.core.SynchronousDispatcher)にあります。 org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.serviceで呼び出す(SynchronousDispatcher.java:209)org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:221)で ( HttpServletDispatcher.java:56) at org.jboss。ここでは、io.undertow.servlet.handlers.ServletHandler.handleRequest(HttpServlet.java:790)の を示します。 io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) でio.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) でServletHandler.java:85) でorg.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.servlet.handlers。セキュリティ。io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.javaでio.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) でSSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) : 43)io.undertowでio.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64でio.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) で) 。 (認証メカニズムハンドラー.java:60) at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthe IOでio.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) でio.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50) でnticatedSessionHandler.java:77) 。 (JACCContextIdHandler.java:61) at io.undertow.server.handlers。 PredicateHandler.handleRequest(PredicateHandler.java:43) io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler .javaファイル:292)10時io.undertow.servlet.handlers.ServletInitialHandlerの$ 2.call(ServletInitialHandler.java:138) でio.undertow.servlet.handlers.ServletInitialHandler.access $ 100(ServletInitialHandler.java:81) で .undertow.servlet.handlers.ServletInitialHandler $ 2.call io.undertow.servlet.core.ContextClassLoaderSetupActionでio.undertow.servlet.core.ServletRequestContextThreadSetupActionの$ 1.call(ServletRequestContextThreadSetupAction.java:48) で(ServletInitialHandler.java:135) io.undertow.servlet.api.LegacyThreadSetupActionWrapper $ 1.callでio.undertow.servlet.api.LegacyThreadSetupActionWrapper $ 1.call(LegacyThreadSetupActionWrapper.java:44) での$ 1.call(ContextClassLoaderSetupAction.java:43) (LegacyThreadSetupActionWrapper.java: 44)io.undertow.servlet.api.LegacyThreadSetupActionWrapper $ 1.callでio.undertow.servlet.api.LegacyThreadSetupActionWrapper $ 1.callで(LegacyThreadSetupActionWrapper.java:44) (LegacyThreadSetupActionWrapper.java:44) io.undertow.servletで。 io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandlerでio.undertow.servlet.api.LegacyThreadSetupActionWrapperの$ 1.call(LegacyThreadSetupActionWrapper.java:44) で$ 1.call(LegacyThreadSetupActionWrapper.java:44) api.LegacyThreadSetupActionWrapper。 Javaの:272) io.undertow.servlet.handlers.ServletInitialHandler $ 1.handleRequest(ServletInitialHandler.java:104)10時 でio.undertow.servlet.handlers.ServletInitialHandler.access $ 000(ServletInitialHandler.java:81) で。 undertow.server.Conn ectors.executeRootHandler(Connectors.java:202) at io.undertow.server.HttpServerExchange $ 1.run(HttpServerExchange.java:805) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java .util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) 原因:javax.transaction.RollbackException:WFLYEJB0447:トランザクション 'TransactionImple < ac 、BasicAction: 0:ffffac280184:2edc54df:598adfb2:27Fステータス:ActionStatus.ABORTED>」 は、すでにバック org.jboss.as.ejb3.tx.CMTTxInterceptor.endTransactionで(CMTTxInterceptor.java:98) を転がしました。.. 。88 more

+0

これについて詳しく知りたいですか?あなたのトランザクションが実際にロールバックされないことは絶対に確信していますか? –

+0

M. Prokhorov - 私はスタックトレースを含むように質問を編集しました。希望すればより多くの情報を提供できます。ありがとう!! – GoAlves

+0

このトランザクション内でこのコンテナにリモート呼び出ししてejbを実行した可能性はありますか? – aschoerk

答えて

2

私は何が起こっているのか分かりました。 私のEJBメソッドが呼び出されたときに、コンテナはグローバルなJTAトランザクション、またはそのようなものを作成します。タイムアウトは5分です(デフォルトはWildflyです)。 ビジネスロジック(ネストされたループ)が処理する時間以上かかるため、DBに再びアクセスしようとするとトランザクションがタイムアウトし、その例外がスローされます。

関連する問題