У нас есть существующее приложение на C++, которое мы постепенно заменим новой системой на базе Java. Пока мы полностью не переопределили все в Java, мы ожидаем, что C++ и Java должны общаться друг с другом (RMI, SOAP, обмен сообщениями и т. Д. - мы не решили).Распространение транзакций Oracle между C++ и Java
Теперь мой менеджер считает, что нам понадобятся стороны Java и C++ для участия в одной транзакции Oracle DB. Это связано, но отличается от обычной проблемы с распределенной транзакцией о том, что один процесс координирует 2 транзакционных ресурса, таких как БД и очередь сообщений.
Я думаю, что распространение транзакции через процессы является ужасной идеей с точки зрения производительности и стабильности, но меня все равно попросят найти решение.
Я знаком с транзакциями XA, и я проделал определенную работу с менеджером транзакций JBoss, но мой googling не получил ничего хорошего в распространении транзакции XA между двумя процессами.
Мы используем Spring на стороне Java, и в их документации явно указано, что они не предоставляют никакой помощи при распространении транзакций.
Мы не планируем использовать традиционный Java EE-сервер (например, IBM Websphere), который может поддерживать распространение (не то, что я могу найти какую-либо окончательную документацию).
Любая помощь или указатели на решения очень ценится.
Вы можете «внедрить» ваше приложение в качестве хранимой процедуры JVM? Затем вы можете «просто» вызвать фрагмент вашего приложения из C++ через соединение с базой данных. – ibre5041
Теоретически вы также можете сделать oposit. Запишите c-хранимую процедуру, которая «подключится» к базе данных. Затем эта процедура будет участвовать в той же транзакции. – ibre5041
вы также можете «назвать» распределенную транзакцию. т. е. вы назначаете ему приготовленное имя. то другой процесс может «присоединиться» к той же транзакции. Для этой цели можно использовать AFAIK DBMS_XA или DBMS_TRANSACTION. – ibre5041