우리는 점차 새로운 Java 기반 시스템으로 대체 할 기존 C++ 응용 프로그램을 보유하고 있습니다. Java에서 모든 것을 완벽하게 재 구현할 때까지는 C++과 Java가 서로 통신해야한다고 생각합니다 (RMI, SOAP, 메시징 등 - 우리는 결정하지 않았습니다).C++과 Java 간의 Oracle 트랜잭션 전파
내 관리자는 Java 및 C++ 측에서 동일한 Oracle DB 트랜잭션에 참여해야한다고 생각합니다. 이것은 하나의 프로세스가 DB 및 메시지 대기열과 같은 2 개의 트랜잭션 자원을 조정하는 일반적인 분산 트랜잭션 문제와 관련이 있습니다.
프로세스간에 트랜잭션을 전파하는 것은 성능 및 안정성 관점에서 끔찍한 아이디어라고 생각하지만 솔루션을 요청할 것입니다.
저는 XA 트랜잭션에 익숙하며 일부는 JBoss Transaction Manager로 작업했지만 Google 검색은 두 프로세스간에 XA 트랜잭션을 전파 할 때 좋은 점이 없습니다.
우리는 Java 측에서 Spring을 사용하고 있으며 문서에 명시 적으로 트랜잭션 전파에 도움이되지 않는다고 명시되어 있습니다.
전통적인 Java EE 서버 (예 : IBM Websphere)는 전파를 지원할 수 있습니다 (최종 문서는 찾을 수 없음).
해결책에 대한 도움이나 조언을 보내 주시면 대단히 감사하겠습니다.
당신은 "삽입"당신이 응용 프로그램은 JVM은 저장 프로 시저를 수? 그런 다음 C++에서 데이터베이스 연결을 통해 응용 프로그램 조각을 "간단하게"호출 할 수 있습니다. – ibre5041
은 이론적으로 당신은 또한 oposit 할 수 있습니다. c-stored 프로 시저와 마주 치면 다시 데이터베이스에 "연결"됩니다. 그런 다음이 절차는 동일한 거래에 참여하게됩니다. – ibre5041
또한 분산 트랜잭션의 "이름 지정"을 할 수 있습니다. 즉 요리 된 이름을 지정합니다. 다른 프로세스가 동일한 트랜잭션에 "결합"할 수 있습니다. 이 목적으로 AFAIK DBMS_XA 또는 DBMS_TRANSACTION을 사용할 수 있습니다. – ibre5041