EJB CMT и время ожидания транзакции - PullRequest
0 голосов
/ 12 сентября 2011

В среде Websphere7 контейнер настроен на тайм-аут любой транзакции, которая длится более 120 секунд для всех наших сессионных компонентов CMT.

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

Можно ли объявить, что один метод в bean-компоненте или конкретном сессионном bean-компоненте имеет собственную задержку времени ожидания?

Если это невозможно, я полагаю, что мое единственное решение - создать бин CMT?

Спасибо!

1 Ответ

0 голосов
/ 12 сентября 2011

Я не знаю websphere7, для Jboss у вас есть что-то вроде this и, возможно, вы найдете что-то похожее для websphere7. Если нет, то, на мой взгляд, у вас есть 3 варианта.

  1. Перестройте архитектуру вашего решения, чтобы использовать MDB для долгосрочных задач для их асинхронного выполнения
  2. Пользователь UserTransaction и setTransactionTimeout для установки времени ожидания транзакции для конкретной транзакции
  3. Создать отдельный bean-компонент CMT с исключительным тайм-аутом транзакции, указанным в xml для этой функции
...