Conversación del cliente con el servidor y transacciones JPA

Estoy desarrollando un sistema de información y hay algo con lo que no sé cómo lidiar. Digamos que mi sitio web permite que el administrador edite usuarios. Cuando dos administradores desean editar el mismo usuario al mismo tiempo, no se debe permitir al administrador que hizo clic en editar más tarde que al primero.

Por lo tanto, quiero que se abra una transacción cuando el administrador hace clic en el botón editar y se confirme cuando envíe el formulario editado.

Una solución que se me ocurre es poner EntityManager en un bean CDI Conversación con Nombre. Pero no creo que esta sea una buena solución, ya que el nivel de presentación debe estar separado del nivel empresarial y el acceso a la base de datos pertenece al nivel empresarial.

Otra solución podría ser poner EntityManager en un bean Stateful y administrar la transacción desde un bean CDI Conversación con Nombre que llame a métodos en el bean Stateful. Pero, ¿es una buena idea administrar transacciones en el nivel web? ¿Qué sucede si decidiera implementar mi nivel de negocio en otro servidor de aplicaciones? ¿Funcionaría la administración de transacciones en un EJB remoto? ¿Y qué pasaría si el EJB se pasivara, se perdería la transacción?

Esto también está relacionado con otro problema, cuando recupera un objeto de la base de datos con EntityManager, se separa tan pronto como se cierra la transacción. Si el objeto tiene algunos campos inicializados diferidos, el nivel web no puede acceder a ellos porque cuando el objeto se devuelve al nivel web, se separa. Por lo tanto, puede administrar transacciones en el nivel web o iterar a través de los campos perezosos inicializados en el nivel empresarial. La primera solución parece ser incorrecta y la segunda puede ser muy detallada y complicada.

Sé que estoy haciendo demasiadas preguntas, pero realmente quiero saber cómo hacerlo correctamente.

Tengo disponibles estas tecnologías: CDI, Seam 3 y EJB.

Por supuesto, si conoce una solución mejor, me encantaría escucharla.

Gracias por adelantado.

Respuesta 1

Cambié a Eclipse 4.2 hace un tiempo y todo es perfecto, pero ahora noté que cuando hago clic derecho en un archivo XML o XSD, ya no tengo la opción de validar ese archivo (3.7 funcionó bien). Lata ...

Estoy usando t: datatable en mi aplicación JSF. ¿Puedo cambiar CSS de fila perticular en base de condición? Condición significa con procesamiento de variable de tabla de datos. ¿Es posible? Estoy usando jsf 1.2 (aunque ...

Tengo que construir una aplicación web que muestre algunos datos. Tendré dos tipos de usuarios: usuarios registrados y usuarios anónimos. Los usuarios registrados ejecutarán la aplicación desde la intranet de la empresa, y de forma anónima ...

Lo siento por mi pregunta tal vez tonta. Tengo tablas de productos y pedidos (con una relación de muchos a muchos), también tengo una tabla de usuario. Y ahora quiero obtener el recuento de productos por user_id y por ...