JEE7: ¿Los beans EJB y CDI admiten transacciones gestionadas por contenedor?

Java EE7 consiste en un montón de definiciones de "bean":

Frijoles gestionados 1.0 (JSR-316 / JSR-250)Inyección de dependencia para Java 1.0 (JSR-330)CDI 1.1 (JSR-346)JSF Managed Beans 2.2 (JSR-344)EJB 3.2 (JSR-345)

Para deshacerme del caos en mi mente, estudio varios artículos de "cuándo usar qué tipo de frijol". Uno de los pros paraEJB parece ser quesolo ellos soportan transacciones declarativas gestionadas por contenedores (las famosas anotaciones de transacción). No estoy seguro, sin embargo, si esto es correcto. ¿Alguien puede aprobar esto?

Mientras tanto, se me ocurrió una aplicación de demostración simple para comprobar si esto era realmente cierto. Acabo de definir un bean CDI (no un EJB - no tiene anotaciones de nivel de clase) como sigue, basado enesta retazo:

public class CdiBean {
    @Resource
    TransactionSynchronizationRegistry tsr;

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

Ahora, el resultado en GlassFish 4.0 es que este método realmente devuelve verdadero, lo que, según mis preguntas, esno funciona como se esperaba. Esperaba que el contenedor ignorara la anotación @Transactional en un método de bean CDI, o incluso lanzara una excepción. Utilizo un servidor GlassFish 4 recién instalado, por lo que no hay interferencias.

Así que mi pregunta es realmente:

¿Qué tipos de bean realmente soportan transacciones gestionadas por contenedor?Solo por curiosidad, ¿cómo podría probarlo con una aplicación de demostración simple si el código anterior es incorrecto?

(BTW: Alguien describió un problema similaraquí, pero su solución no se aplica a mi caso.

Respuestas a la pregunta(2)

Su respuesta a la pregunta