Кажется, что самый простой ответ - просто написать небольшой тестовый пример.Я только что создал простой EJB с пользовательской настройкой таймаута CMT в "sun-ejb-jar.xml
".
Затем я написал метод для этого класса EJB, аннотированный для запроса собственной новой транзакции.Этот метод сделал три вещи: (1) написать сообщение журнала, (2) использовать Thread.sleep()
, чтобы приостановить выполнение на некоторое время, и (3) написать второе сообщение журнала.
Используя значения сна, которые были большечем время ожидания CMT или меньше, я смог подтвердить, что настройки были применены .
Однако, одно интересное замечание, которое я узнал из этого ... когда тайм-аут транзакции, управляемой контейнером, для метода EJB3 делает не прерываниеостановить выполнение этого метода!Метод продолжает выполняться (или остается зависшим), и последствия тайм-аута не обрабатываются и не регистрируются до тех пор, пока метод не вернется.Интересное поведение, которое может привести к серьезным ошибкам, если вы не знаете об этом.Подробнее см. в этой статье .