Абсолютно. Вы можете счесть полезным прочитать о transaction attributes.
Если вызываемый метод в первом классе (скажем StatelessFirst
) имеет тип транзакции REQUIRED
(по умолчанию) или REQUIRES_NEW
, когда она называется она будет инициировать новую транзакцию. Если это затем вызывает метод во втором классе (скажем StatelessSecond
) с типом транзакции REQUIRES_NEW
, первая транзакция приостанавливается, и вторая транзакция инициируется во время выполнения второго метода. Когда метод в StatelessSecond
завершается, вторая транзакция фиксируется, первая транзакция восстанавливается, а управление передается обратно на StatelessFirst
.
Чтобы сделать первый транзакционный фиксацию до того, как вызывается StatelessSecond
, вы можете использовать bean-managed transactions. Это дает вам полный контроль над управлением транзакциями, поэтому в StatelessFirst
вы можете начать транзакцию, а затем совершить вызов StatelessSecond
. Если вы пойдете с таким подходом, обратите внимание, что вы в can't perform nested transactions в BMT.
Еще один вариант, который позволяет вам оставаться внутри CMT, заключается в том, чтобы вывести транзакционное поведение из StatelessFirst
в третий EJB, с REQUIRES_NEW
. Затем картина:
- Клиент называет
StatelessFirst
, который инициирует транзакцию на
StatelessFirst
вызовы NewBean
, который инициирует транзакцию B, и выполняет некоторую работу
NewBean
совершает сделку B и возвращает
StatelessFirst
вызовов StatelessSecond
, который инициирует транзакцию C и выполняет свою работу
StatelessSecond
совершает транзакцию C и возвращает
StatelessFirst
завершается, и совершает сделки A (который не имеет каких-либо изменений в любом случае)
Ладно, я на самом деле объявлен как метод Java require_new 1 день назад. Однако. я надеюсь, что statelessfirst должен зафиксировать, прежде чем выставлять безстоящие лица. Не похоже на то, что было написано вами ---> первая транзакция приостановлена, и вторая транзакция инициируется во время выполнения второго метода. –
А, ок, тогда вам понадобятся операции, управляемые бобами. Я отредактирую это в своем ответе. – hugh