Oracle
 sql >> Database >  >> RDS >> Oracle

Propagazione delle transazioni Oracle tra C++ e Java

C'è un esempio sul blog di Laurent Schneider di utilizzare il pacchetto DBMS_XA all'interno di Oracle per consentire a più sessioni di lavorare nella stessa transazione. Quindi sarebbe possibile avere sessioni Java e C++ che partecipano alla stessa transazione senza bisogno di alcun tipo di coordinatore aggiuntivo.

In alternativa, potresti prendere in considerazione l'utilizzo di Workspace Manager. Questo è stato originariamente progettato per supportare transazioni di durata estremamente lunga (cioè manipolare molti dati spaziali per uno sviluppo proposto). In sostanza, puoi creare uno spazio di lavoro, che nel tuo caso sarebbe più o meno equivalente a una transazione denominata. Sia il codice Java che quello C++ potrebbero entrare in quell'area di lavoro (da sessioni separate) ed entrambi potrebbero manipolare e confermare i dati in quell'area di lavoro. Quando la transazione è stata completata, puoi quindi unire lo spazio di lavoro allo spazio di lavoro LIVE, il che equivale a eseguire un commit in una normale transazione.

D'altra parte, sono pienamente d'accordo con la tua valutazione iniziale secondo cui è molto probabile che coordinare le transazioni tra i processi sia una cattiva idea dal punto di vista delle prestazioni, della stabilità, della semplicità e della manutenzione. D'altra parte, potrebbe essere un requisito aziendale legittimo a seconda di come verrà ritirato il codice C++ (ovvero se è possibile sostituire il codice in modo tale che le transazioni possano essere esclusivamente Java o esclusivamente C++)