В GlassFish 2.x, проверка настройки «cmt-timeout-in-seconds» в «sun-ejb-jar.xml» - PullRequest
0 голосов
/ 27 января 2011

Моя команда использует параметр «cmt-timeout-in-seconds» в файле «sun-ejb-jar.xml» на сервере GlassFish 2.x, чтобы контролировать порог времени ожидания транзакции для модуля EJB.

Я понимаю, что это довольно широкий вопрос ... но у нас есть проблемы (я сам не уверен во всех деталях), и меня попросили проверить, что "cmt-timeout-in -секунды "на самом деле используется.

Кто-нибудь знает способ опроса или определения этого на сервере приложений, если не считать написания нового пользовательского кода для его проверки? Я даже не уверен, какой именно код я бы написал, если бы мне пришлось пойти по этому пути.

1 Ответ

0 голосов
/ 28 января 2011

Кажется, что самый простой ответ - просто написать небольшой тестовый пример.Я только что создал простой EJB с пользовательской настройкой таймаута CMT в "sun-ejb-jar.xml".

Затем я написал метод для этого класса EJB, аннотированный для запроса собственной новой транзакции.Этот метод сделал три вещи: (1) написать сообщение журнала, (2) использовать Thread.sleep(), чтобы приостановить выполнение на некоторое время, и (3) написать второе сообщение журнала.

Используя значения сна, которые были большечем время ожидания CMT или меньше, я смог подтвердить, что настройки были применены .

Однако, одно интересное замечание, которое я узнал из этого ... когда тайм-аут транзакции, управляемой контейнером, для метода EJB3 делает не прерываниеостановить выполнение этого метода!Метод продолжает выполняться (или остается зависшим), и последствия тайм-аута не обрабатываются и не регистрируются до тех пор, пока метод не вернется.Интересное поведение, которое может привести к серьезным ошибкам, если вы не знаете об этом.Подробнее см. в этой статье .

...