You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jakarta EE 8 JTA事务运行超2分钟即中止问题求助

事务超时导致EJB调用失败问题求助

环境信息

  • Apache Netbeans 16
  • Glassfish 6.2.5
  • JPA 3.0 + Hibernate,事务类型为JTA

问题现象

每当事务运行超过2分钟时,会自动中止并抛出jakarta.ejb.TransactionRolledbackLocalException,完整错误栈如下:

A system exception occurred during an invocation on EJB PaiementreservationFacade, method: public java.util.List dao.PaiementreservationFacade.getPaiementreservationPortemonnaieByPersonne(java.lang.Integer,int)|#]
  jakarta.ejb.TransactionRolledbackLocalException: Client's transaction aborted
    at com.sun.ejb.containers.EJBContainerTransactionManager.useClientTx(EJBContainerTransactionManager.java:334)
    at com.sun.ejb.containers.EJBContainerTransactionManager.preInvokeTx(EJBContainerTransactionManager.java:228)
    at com.sun.ejb.containers.BaseContainer.preInvokeTx(BaseContainer.java:4001)
    at com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1767)
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:186)
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:64)
    at jdk.proxy60/jdk.proxy60.$Proxy1268.getPaiementreservationPortemonnaieByPersonne(Unknown Source)
    at BusinessService.FactureManager.create(FactureManager.java:931)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.glassfish.exousia.AuthorizationService.lambda$invokeBeanMethod$6(AuthorizationService.java:501)
    at org.glassfish.exousia.AuthorizationService.runInScope(AuthorizationService.java:577)
    at org.glassfish.exousia.AuthorizationService.invokeBeanMethod(AuthorizationService.java:501)
    at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:295)
    at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4241)
    at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:603)
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:805)
    at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:552)
    at org.jboss.weld.module.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:72)
    at org.jboss.weld.module.ejb.SessionBeanInterceptor.aroundInvoke(SessionBeanInterceptor.java:52)
    at jdk.internal.reflect.GeneratedMethodAccessor199.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:867)
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:804)
    at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:552)
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:136)
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:113)
    at jdk.internal.reflect.GeneratedMethodAccessor200.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:867)
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:804)
    at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:348)
    at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4216)
    at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4206)
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:188)
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:64)
    at jdk.proxy60/jdk.proxy60.$Proxy1444.create(Unknown Source)

当前persistence.xml配置

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<persistence xmlns="https://jakarta.ee/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="https://jakarta.ee/xml/ns/persistence https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd"
             version="3.0">
    <persistence-unit name="myApp" transaction-type="JTA">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <jta-data-source>jdbc/MyApp</jta-data-source>

    <exclude-unlisted-classes>false</exclude-unlisted-classes>
   <properties>
       <property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.SunOneJtaPlatform"/>
       <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
       <property name="hibernate.dialect.storage_engine" value="innodb"/>
       <!--<property name = "hibernate.show_sql" value = "true" />-->
       <!--<property name="hibernate.jdbc.time_zone" value="CET"/>-->
   </properties>
    </persistence-unit>
</persistence>

已尝试的无效操作

  • 在persistence.xml中添加以下属性,改用javax前缀也无效果:
    <property name="jakarta.persistence.lock.timeout" value="1"/>
    <property name="jakarta.persistence.query.timeout" value="1"/>
    
  • 在REST请求开头添加125秒休眠,休眠结束后首次操作数据库仍触发相同错误:
    try {
         System.out.println("Sleep starts");
         Thread.sleep(125000);
         System.out.println("Sleep ends");
     } catch (InterruptedException e) {
         e.printStackTrace();
     }
    

请求解决思路

目前无法找到有效延长事务超时时间的配置方式,恳请提供可行的解决方向。

内容的提问来源于stack exchange,提问作者Chatis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 09:15:59