2012-03-29 2 views
0

У меня есть 4 клиента ejb, которые получают доступ к классу POJO на разных серверах приложений. Этот класс POJO будет записывать некоторые данные в БД. BUt теперь, когда вызов для обновления данных в БД поступает одновременно с обоих серверов приложений, создается блокировка БД, и все данные не могут быть успешно сохранены.Управление записями DB, когда несколько серверов приложений одновременно обновляют данные

Ограничение: Этот класс не может быть установлен EJB, и настройки по умолчанию для сервера приложений не могут быть изменены (например: Тайм-аут транзакции).

Как решить эту проблему?

+0

Какая ошибка? Как долго первая сессия удерживает транзакцию открытой? Каков тайм-аут транзакции для второго сеанса? Почему у вас есть две сессии, работающие на двух разных серверах приложений, обновляющих одну и ту же строку в одной таблице? Это обычно не так, как вы хотели бы разработать систему. –

+0

Ошибка: java.sql.SQLException: ORA-02049: timeout: распределенная транзакция, ожидающая блокировки. Тайм-аут транзакции - это настройки по умолчанию для сервера приложений. – Rekha

+0

Каков тайм-аут транзакции на вашем сервере приложений? Почему существует распределенная транзакция? Как долго вы ожидаете, что первая транзакция будет открыта, удерживая замок? –

ответ

0

Ваша ситуация Похоже на концепцию семафора в операционной системе. Почему бы вам не попробовать одно и то же, используя задержку или сон для некоторых фракций.

Смежные вопросы