Сервер, который я использую, является GlassFish, но эта проблема также возникает и в Weblogic.Обнаружение клиента EJB Datasource disconnect
Моя клиентская машина начинает транзакцию, просматривает несколько EJB с сервера и начинает какую-то работу, которая требует времени. Во время процесса клиентская машина умирает (скажем, powercut).
Запросы базы данных, открытые клиентской машиной, никогда не закрываются (потому что клиент завершен), и это вызывает взаимоблокировки и другие проблемы.
Есть ли способ обнаружить эту мертвую транзакцию и вернуть все ресурсы?
Псевдокод ниже пример
transaction.begin();
MyBean bean = (MyBean)ctx.lookup("MyBean");
bean.doComplicatedWorkPart1();
bean.writeResultsToTheDatabase();
// Client dies during this method (powercut), so the transaction
// is simply left hanging.
bean.doComplicatedWorkPart2();
bean.writeResultsToTheDatabase();
transaction.commit();
Спасибо, я думал, что это может быть сложная ситуация. Это происходит не слишком часто, но может быть неприятностью, когда это происходит. –