Which two are restrictions of beans with bean-managed transactions?
(Choose two)
- The NOT_SUPPORTED transaction attribute must be chosen
- Clients calling with a transactional context are prohibited and will result in an exception
- A stareful session bean must commit a started transaction before a business method returns.
- A bean that starts a transaction must complete the transaction before it starts a new transaction
- A message-driven bean instance must commit a transaction before the onMessage method returns.
Un EJB que utiliza BMT (bean-managed transaction) debe ser un session bean o un message-driven bean.
La instancia que inicia la transacción debe completar la transacción antes que comience una nueva, así que la cuarta alternativa es cierta.
Un stateful session bean puede, pero no es obligatorio, dar commit a la transacción iniciada antes de que el método de negocio finalice, por lo que la tercera no va. Si una transacción no ha sido completada al terminar el método de negocio, el contenedor mantiene la asociación entre la transacción y la instancia a través de múltiples invocaciones del cliente hasta que se complete la transacción.
En el caso de los session bean stateless se debe dar COMMIT a la transacción antes del final del método de negocio o del método timeout callback. Esto no tiene que ver con la pregunta, pero es bueno saberlo.
Y para finalizar, un message-driven bean debe dar COMMIT a la transacción antes de la finalización del método message listener (como onMessage) o del método timeout callback, por lo que la última va; y nos quedamos con la cuarta y con la quinta.
Pregunta tomada de ExamWorx
Publicar un comentario