java - ¿Cómo puedo detectar excepciones de la confirmación de transacciones gestionadas en contenedores?
exception transactions (1)
Desafortunadamente no es posible detectar excepciones de fallas de transacciones gestionadas por contenedores. Como dijiste, tu mejor opción es usar transacciones administradas por frijol. Alternativamente, podría envolver su EJB EM con un bean proxy que implemente la misma interfaz. Las transacciones administradas por contenedor son apropiadas cuando su código no necesita responder a fallas de compromiso específicas.
Tengo un EJB @Stateless
con una interfaz @WebService
, que utiliza transacciones administradas por contenedor, lo que significa que el contenedor automáticamente confirma las transacciones después de que se ha llamado a un método si no lanza una excepción del sistema.
Si intento con EntityManager.persist(...)
dos objetos con el mismo valor para una columna con una restricción única en él, el contenedor lanzará una PersistenceException
al cliente en la confirmación fuera de mi código. ¿Cómo atrapo esta excepción para que pueda volver a lanzar mi propia excepción de aplicación?
¿Tengo que comprometer la transacción manualmente en mis métodos para detectar excepciones en la confirmación? (¿Y es EntityManager.flush()
la forma correcta de hacerlo?) En caso afirmativo, ¿de qué EntityManager.flush()
tener transacciones gestionadas en contenedores?