Tenemos una aplicación de C++ existente que vamos a reemplazar gradualmente con un nuevo sistema basado en Java. Hasta que hayamos reimplementado completamente todo en Java, esperamos que C++ y Java tengan que comunicarse entre sí (RMI, SOAP, mensajería, etc., no lo hemos decidido).Propagación de transacciones de Oracle entre C++ y Java
Ahora mi gerente piensa que necesitaremos los lados Java y C++ para participar en la misma transacción Oracle DB. Esto está relacionado con el problema habitual de transacción distribuida, pero es diferente de tener un proceso único que coordine 2 recursos transaccionales, como un DB y una cola de mensajes.
Creo que propagar una transacción entre los procesos es una idea terrible desde el punto de vista de la performance y la estabilidad, pero aún así se me pedirá una solución.
Estoy familiarizado con las transacciones XA y he trabajado un poco con JBoss Transaction Manager, pero mi Google no ha encontrado nada bueno en la propagación de una transacción XA entre 2 procesos.
Estamos utilizando Spring en el lado de Java y su documentación establece explícitamente que no proporcionan ninguna ayuda con la propagación de transacciones.
No estamos planeando utilizar un servidor Java EE tradicional (por ejemplo: IBM Websphere), que puede tener soporte para propagación (no es que pueda encontrar documentación definitiva).
Cualquier ayuda o consejos sobre soluciones es muy apreciada.
¿puede "incrustar" su aplicación como procedimiento almacenado JVM? A continuación, puede "simplemente" llamar al fragmento de su aplicación desde C++ a través de la conexión a la base de datos. – ibre5041
Teóricamente, también puedes hacer la oposición. Mame un procedimiento almacenado en c, que se "conectará" de nuevo a la base de datos. Entonces este procedimiento participará en la misma transacción. – ibre5041
también puede "nombrar" transacción distribuida. es decir, le asigna un nombre cocido. luego otro proceso, puede "unirse" a la misma transacción. AFAIK DBMS_XA o DBMS_TRANSACTION se pueden usar para este propósito. – ibre5041