Я реализую двухфазную фиксацию для распределенной транзакции (используя 2 базы данных). Я имитирую потерю соединения с сервером БД, вытаскивая сетевой кабель на компьютер и затем подключая его обратно. Однако это приводит к сбою транзакции при выполнении «отката», поскольку объект соединения с БД теряется. Есть ли способ, чтобы я мог восстановить потерянный объект подключения к БД или принудительно применить приложение, чтобы попытаться подключиться к тому же соединению через определенный промежуток времени. Я использую DB2 и Websphere 6.1 в качестве сервера приложений. Соединение DB происходит через поиск jndi. Использование Atomikos в качестве Менеджера транзакций.Объединение пула: получение потерянного соединения DB
В общем, как приложение, реализующее 2-фазную фиксацию восстановления (отката) в сценарии сбоя базы данных? Является ли восстановление ответственностью приложения или должно ли это сделать Менеджер транзакций?
Спасибо Андреасу..и проверим это. Но можно ли провести другой тест без изменения настроек сервера БД? Я в основном уверен, что это значение wnt будет изменено для производственных серверов. как я могу обеспечить восстановление тогда? – Andy
Строго говоря, «восстановление» означает разрешение транзакций с сомнением, то есть распределенные транзакции, в которых по меньшей мере одному участнику было предложено подготовить транзакцию и где не все участники совершили/откат.Если сбой происходит до того, как была подготовлена транзакция DB2 (что, вероятно, имеет место в вашем сценарии), то восстановление не требуется (для этого ресурса), но блокировки останутся до тех пор, пока DB2 не обнаружит, что соединение нарушено. Если транзакция была подготовлена, восстановление должно выполняться независимо от того, какое соединение используется. –
спасибо, что объяснил это хорошо. Я полагаю, d блокировка d DB происходит из-за настроек сервера DB2, а не из-за приложения ... Позвольте мне видеть, что я могу сделать, чтобы изменить tht. У меня также есть сомнение в том, что транзакция не совершается в качестве ее набора для rollbackOnly, но я опубликую новый вопрос для этого. – Andy