Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Propagação de transações Oracle entre C++ e Java


um exemplo no blog de Laurent Schneider de usar o pacote DBMS_XA dentro do Oracle para permitir que várias sessões funcionem na mesma transação. Assim, seria possível ter sessões Java e C++ participando da mesma transação sem a necessidade de nenhum tipo de coordenador adicional.

Como alternativa, você pode considerar usar o Workspace Manager. Isso foi originalmente projetado para suportar transações extremamente longas (ou seja, manipular muitos dados espaciais para um desenvolvimento proposto). Essencialmente, você pode criar um espaço de trabalho, que no seu caso seria aproximadamente equivalente a uma transação nomeada. Tanto o código Java quanto o C++ podem entrar nesse espaço de trabalho (de sessões separadas) e ambos podem manipular e confirmar dados nesse espaço de trabalho. Quando a transação for concluída, você poderá mesclar a área de trabalho com a área de trabalho LIVE, o que equivale a fazer uma confirmação em uma transação normal.

Por outro lado, concordo plenamente com sua avaliação inicial de que coordenar transações entre processos é muito provavelmente uma má ideia do ponto de vista de desempenho, estabilidade, simplicidade e manutenção. Por outro lado, pode ser um requisito de negócios legítimo, dependendo de como o código C++ será retirado (ou seja, se é possível substituir o código de forma que as transações possam ser exclusivamente Java ou exclusivamente C++)