Jakarta ee 如何在Glassfish 4.1.1中更改EJB事务超时?

Jakarta ee 如何在Glassfish 4.1.1中更改EJB事务超时?,jakarta-ee,ejb,glassfish-4.1.1,Jakarta Ee,Ejb,Glassfish 4.1.1,在Glassfish中,EJB事务超时默认设置为120秒,我想更改此值。 我知道可以通过在glassfish-ejb-jar.xml中定义“cmt timeout in seconds”参数来更改它,但我使用的Web模块中包含ejb类,并且分别使用glassfish-Web.xml。 有没有办法改变超时时间 UPD: 事务服务设置中的事务超时值无效 @Schedule(minute = "*/5", hour = "*", persistent = false) public voi

在Glassfish中,EJB事务超时默认设置为120秒,我想更改此值。

我知道可以通过在glassfish-ejb-jar.xml中定义“cmt timeout in seconds”参数来更改它,但我使用的Web模块中包含ejb类,并且分别使用glassfish-Web.xml。

有没有办法改变超时时间

UPD:

事务服务设置中的事务超时值无效

@Schedule(minute = "*/5", hour = "*", persistent = false)
public void doSomething() {
    log.info("Started");
    try {
        Thread.sleep(1000 * 119);
    } catch (InterruptedException ex) {
        log.info("Interrupted", ex);
    }
    log.info("Finished");
}
上面的代码运行良好。但是如果你想把睡眠时间改为121秒

Thread.sleep(1000 * 121);
在GF服务器日志中,我看到一个错误:

Warning:   EJB5123:Rolling back timed out transaction
在此之后,服务再次调用doSomething()方法,2分钟后我再次看到错误:

Warning:   EJB5123: Rolling back timed out transaction
Info:   EJB5119:Expunging timer [...] after [2] failed deliveries

服务不再调用doSomething()方法。

事务超时的默认值是0(无超时),而不是120。2.1.1版似乎还没有过时

  • 转到(默认端口为4848,)

  • 左侧菜单:配置->服务器配置->事务服务

  • 字段:事务超时

  • 服务器重启


在GlassFish 4.1上测试,在4.1.1中应该没有太大区别。

这是一个报告的错误


对于我来说,当我有一个方法导入大量数据并调用flush时。

即使是web模块,也要添加sun-ejb-jar.xml(或glassfish ejb-jar.xml):


YourEJB名称
1200

我的问题与原始海报完全相同。用于在Glassfish 4.1上正常工作——仅在升级到4.1.1后才开始接收错误。在domain.xml中未指定超时值。我将尝试添加显式超时0,并在几天后报告。要确认,显式超时0没有实质性影响。我预定的方法继续超时。我也经历过同样的错误,现在似乎有一个问题产生了:非常感谢,这个解决方法在我的情况下也有帮助(GF 4.1.1)!
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 EJB 3.0//EN" "http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_0-0.dtd">
<sun-ejb-jar>
    <enterprise-beans>
         <ejb>
            <ejb-name>YourEjbName</ejb-name>
            <cmt-timeout-in-seconds>1200</cmt-timeout-in-seconds>
         </ejb>
    </enterprise-beans>
</sun-ejb-jar>