覆盖 WebSphere 默认事务超时

Overwrite WebSphere default transaction timeout

我在 WebSphere 上有一个应用程序,默认事务是 150 秒,我不想更改它。 但是我有一个 EJB 计时器,有时它需要太长的时间(超过 150 秒)才能完成并抛出 TimeoutException。

我如何才能只覆盖此 method/bean 的事务超时?

@Timeout
public void mainService(Timer time) {
    // some code
}

以下 Whosebug post 提供了这个问题的答案:

post 没有给出 ibm-ejb-jar-ext.xml 文件的完整示例,这可能很难找到,所以我将在此处包括一个。

<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar-ext xmlns="http://websphere.ibm.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-ext_1_1.xsd" version="1.1">
    <session name="YourSessionBean">
        <global-transaction transaction-time-out="300"/>
    </session>
</ejb-jar-ext>

您需要替换您的 bean 名称并放置 ibm-ejb-jar-ext.xml 文件(如果您还没有),以及您的 EJB 部署描述符 ejb-jar.xml