Digamos que tengo dos aplicaciones, cada una con un archivo EAR individual, que se llaman entre sí dentro de la misma Transacción JTA. Si ambos comparten el mismo entitymanager, ¿obtienen la misma sesión o se crea nueva cada vez?Dos archivos EAR, el mismo administrador de entidades JPA, misma transacción => misma sesión?
Respuesta
Un EntityManager (en JPA) es más o menos equivalente a una sesión (en Hibernate). En una aplicación JPA pura, solo usaría EntityManager. Encapsula una sesión. La sesión vive mientras el EntityManager viva.
No hay ninguna razón (y creo que de ninguna manera) para compartir un EntityManager entre dos aplicaciones, ya que se ejecutan en diferentes JVM (al menos en los servidores de aplicaciones con los que he trabajado). Lo que puede hacer es compartir la configuración de EntityManager (llamada unidad de persistencia). Puede hacerlo colocando las clases de entidad y el XML en un JAR y usándolo desde ambas aplicaciones, pero cómo exactamente se hace esto depende probablemente de su servidor de aplicaciones. Definitivamente tendrá el mismo efecto que duplicar las clases y el XML para la segunda aplicación.
Lo que sucederá es esto: cada una de las dos aplicaciones tendrá su propio contexto de persistencia. Eso significa que cuando carga una entidad en una aplicación, no se cargará en la otra. Si carga y modifica una entidad en la aplicación uno, luego la carga en la aplicación dos, la aplicación dos verá la entidad no modificada (excepto si tiene una configuración de aislamiento de transacciones muy extraña y, la aplicación decide vaciar primero la entidad).
Cualquier conflicto solo aparecerá al final de la transacción JTA. No sé qué sucederá entonces, y creo que depende de la base de datos y la configuración de la transacción. Probablemente, la transacción se retrotraerá si ambas aplicaciones intentan hacer cosas diferentes con los mismos datos. Cada aplicación tendrá su propia conexión de base de datos. Están vinculados por la transacción JTA, por lo que es allí donde se garantiza que ambos se comprometan o ambos retroceden.
- 1. 2 entidades JPA en la misma tabla
- 2. dos archivos CSS que definen misma clase
- 3. ¿Asignar dos entidades diferentes a la misma tabla?
- 4. ¡Múltiples entidades de almacén de datos con la misma ID!
- 5. Ordenar dos matrices de la misma manera
- 6. Utilice el mismo modelo en dos clases de administrador activo
- 7. dividir dos veces en la misma expresión?
- 8. ¿Cómo instalo la misma aplicación Android .apk dos veces en el mismo dispositivo?
- 9. misma función para dos botones en jQuery
- 10. Multiple WebRequest en la misma sesión
- 11. compilar dos versiones de la misma aplicación de Android e instalar ambas en el mismo dispositivo
- 12. Serialize XML misma etiqueta dos veces
- 13. Dos reinos en la misma aplicación con Spring Security?
- 14. ¿Cómo se permiten dos DLL con el mismo namespace.class para existir en la misma aplicación?
- 15. System.Windows.Forms.WebBrowser abre vínculos en la misma ventana o en una nueva ventana con la misma sesión
- 16. Dos propietarios de la misma base de datos PostgreSQL
- 17. ¿Puedo usar dos versiones incompatibles de la misma DLL en el mismo proceso?
- 18. Cómo construir el mismo kernel Linux dos fuentes y obtener la misma suma de comprobación
- 19. Hibernate PostInsertEventListeners -Utilizar la misma transacción que insertar?
- 20. Dos UITableView en la misma vista
- 21. Dos ValidationSummary en la misma página
- 22. Dos formularios comparten la misma entrada
- 23. agregando la misma clave dos veces en el Mapa
- 24. Inicializar dos variables en la misma línea
- 25. ¿Cómo usar la misma conexión para dos consultas en Spring?
- 26. ¿Cómo hacer dos <div>...</div> en la misma fila?
- 27. transacciones y administrador de entidades symfony2
- 28. Cómo configurar Spring para hacer que JPA (Hibernate) y JDBC (JdbcTemplate o MyBatis) compartan la misma transacción
- 29. TopShelf instalar múltiples del mismo servicio en la misma máquina
- 30. Cómo poner dos botones en la misma línea en Android
¿las aplicaciones comparten archivos de clases? –
sí, las entidades y alguna api común – Mauli
¿Ha configurado su entitymanager para usar contextos de persistencia extendida? – HDave