sql >> Base de Datos >  >> RDS >> Oracle

Propagación de transacciones de Oracle entre C++ y Java

Hay un ejemplo en el blog de Laurent Schneider de usar el paquete DBMS_XA dentro de Oracle para permitir que varias sesiones funcionen en la misma transacción. Por lo tanto, sería posible tener sesiones de Java y C++ participando en la misma transacción sin necesidad de ningún tipo de coordinador adicional.

Alternativamente, podría considerar usar Workspace Manager. Eso fue diseñado originalmente para admitir transacciones de ejecución extremadamente prolongada (es decir, manipular muchos datos espaciales para un desarrollo propuesto). Esencialmente, puede crear un espacio de trabajo, que en su caso sería más o menos equivalente a una transacción con nombre. Tanto el código de Java como el de C++ podrían ingresar a ese espacio de trabajo (desde sesiones separadas) y ambos podrían manipular y confirmar datos en ese espacio de trabajo. Cuando se completó la transacción, podría fusionar el espacio de trabajo con el espacio de trabajo LIVE, lo que equivale a realizar una confirmación en una transacción normal.

Por otro lado, estoy totalmente de acuerdo con su evaluación inicial de que es muy probable que coordinar transacciones entre procesos sea una mala idea desde el punto de vista del rendimiento, la estabilidad, la simplicidad y el mantenimiento. Por otro lado, bien puede ser un requisito comercial legítimo dependiendo de cómo se vaya a retirar el código C++ (es decir, si es posible reemplazar el código de tal manera que las transacciones puedan ser exclusivamente Java o exclusivamente C++)