TransactionImpleManager.suspend вызывается неявно - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть бин с использованием BMT.Другой боб, использующий BMT, вводится первым.Теперь, когда первый вызывает метод второго, транзакция внезапно закрывается.В своем коде я сузил его до той точки, которая была до вызова метода и внутри него.

Вот трассировка:

2018-11-23 12: 15: 32,275+0100 [TRACE] [com.arjuna.ats.jta] (задание по умолчанию-18) TransactionImple.getStatus: javax.transaction.Status.STATUS_ACTIVE

2018-11-23 12: 15: 32,276 +0100 [TRACE] [com.arjuna.ats.jta] (задание по умолчанию-18) TransactionImpleManager.suspend

2018-11-23 12: 15: 32,277 +0100 [TRACE] [com.arjuna.ats.jta](задание по умолчанию-18) TransactionSynchronizationRegistryImple.getTransactionKey

пример кода:

@Stateless
@TransactionManagement(TransactionManagementType.BEAN)
public class A{
  @Inject
  private B b;
  @Inject
  private UserTransaction trx;

  public void foo(){
    trx.begin();
    //transaction is active
    b.bar();
    trx.commit();
  }
}
@Stateless
@TransactionManagement(TransactionManagementType.BEAN)
public class B{
  public void bar(){
    //transaction is closed
    //whatever
  }
}

Происходит на JBoss EAP 7.0.9.

У меня есть это созвездие в лотахмест, но только здесь это ломается.Я что-то упустил?Где я могу найти дополнительные подсказки?

1 Ответ

0 голосов
/ 27 ноября 2018

Краткий ответ: BMT не распространяются на другие компоненты с помощью BMT.Просто невозможно иметь охватывающий код транзакции в обоих bean-компонентах.

(За исключением случаев, когда вы взламываете JBoss TransactionManager, чтобы всегда получать одну и ту же транзакцию БД.)

...