JEE7: EJB и CDI-бины поддерживают транзакции, управляемые контейнером?

Java EE7 состоит из несколькихбоб» определения:

Управляемые бобы 1.0 (JSR-316 / JSR-250)Внедрение зависимостей для Java 1.0 (JSR-330)CDI 1.1 (JSR-346)JSF Managed Beans 2.2 (JSR-344)EJB 3.2 (JSR-345)

Чтобы избавиться от хаоса в уме, я изучаю несколько статей "когда использовать какой тип бобов ", Один из плюсов дляEJB кажется, чтоони одни поддерживают декларативные транзакции, управляемые контейнером (знаменитые аннотации транзакций). Я'Я не уверен, хотя, если это правильно. Кто-нибудь может это одобрить?

Тем временем я придумал простое демонстрационное приложение, чтобы проверить, правда ли это. Я только что определил бин CDI (не EJB - он не имеет аннотаций на уровне класса) следующим образом, основанный наэтот фрагмент кода:

public class CdiBean {
    @Resource
    TransactionSynchronizationRegistry tsr;

    @Transactional(Transactional.TxType.REQUIRED)
    public boolean isTransactional() {
        return tsr.getTransactionStatus() == Status.STATUS_ACTIVE;
    }
}

Теперь результат на GlassFish 4.0 заключается в том, что этот метод на самом деле возвращает true, что, по моим запросам,не работает, как ожидалось, Я ожидал, что контейнер проигнорирует аннотацию @Transactional для метода bean-компонента CDI или даже выдаст исключение. Я использую только что установленный сервер GlassFish 4, поэтому никаких помех нет.

Итак, мой вопрос действительно:

Какие типы бинов действительно поддерживают транзакции, управляемые контейнером?Ради любопытства, как я могу протестировать его с помощью простого демонстрационного приложения, если приведенный выше код неверен?

(Кстати: кто-то описал похожую проблемуВот, но его решение не относится к моему делу. "

Ответы на вопрос(2)

Ваш ответ на вопрос