Glassfish では、EJB トランザクション タイムアウトはデフォルトで 120 秒に設定されています。この値を変更したいと考えています。
glassfish-ejb-jar.xml で「cmt-timeout-in-seconds」パラメーターを定義することで変更できることはわかっていますが、EJB クラスを含む Web モジュールを使用し、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 Server ログに次のエラーが表示されます。
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() メソッドを呼び出さなくなりました。