Я анализирую возможные варианты использования, в которых могут использоваться управляемые бином транзакции (BMT) и управляемый бином параллелизм (BMC).Ниже приведен результат моей наземной работы над BMT:
- Транзакции, которые могут выполняться в непредсказуемое время
- Контейнер налагает тайм-аут (даже если он настраивается)на транзакции.
- Для некоторых транзакций (например, передача файлов по FTP стороннему поставщику, сохранение результатов распределения очереди jms или фиксация между двумя различными источниками данных) время транзакции может быть совершенно непредсказуемым.
- В таких случаях Bean Provider может контролировать управление транзакциями с помощью BMT.
- Придерживание CMT в таких случаях может привести к множеству исключений и сбоев транзакций.
- Несколько транзакций в одном методе компонента
- CMT допускает только одну транзакцию для метода компонента.
- В случае, если нам нужно использовать много транзакций, мынеобходимо использовать BMT - конечно, в большинстве случаев возможно иметь обходной путь в CMT.Но временное решение иногда может быть неоптимальным.
- Одна транзакция, охватывающая несколько вызовов метода EJB
- Если необходимо вызвать несколько методов с областью действияВ той же транзакции можно использовать BMT.
Однако я не нашел ни одного интересного варианта использования BMC.Единственная информация, которую я смог получить, - это Enterprise JavaBeans 3.1 (6-е издание), в которой говорится
"... параллелизм, управляемый контейнером, не охватывает весь спектр проблем, которые должен решать многопоточный код. В этих случаяхспецификация делает доступными все возможности параллельных инструментов языка Java, предлагая управляемый бином режим параллелизма. "
Было бы очень приятно, если бы вы могли поделиться своим опытом в конкретных случаях использования BMT или BMC.