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

Java EE7 состоит из нескольких определений «bean»:

Управляемые бобы 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)

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