Der Server, den ich verwende, ist GlassFish, aber dieses Problem tritt auch auf Weblogic.Erkennen von EJB-Datenquelle Client trennen
Meine Client-Maschine beginnt eine Transaktion, sucht mehrere EJBs vom Server und beginnt einige Arbeiten, die eine Weile dauern. Während des Prozesses stirbt der Client-Computer (sagen wir einen Stromausfall).
Die vom Client-Computer geöffneten Datenbankabfragen werden nie geschlossen (weil der Client beendet wurde) und dies führt zu Deadlocks und anderen Problemen.
Gibt es eine Möglichkeit, diese tote Transaktion zu erkennen und alle Ressourcen zurückzufordern?
Pseudocode Beispiel unten
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();
Danke, ich dachte, das könnte eine schwierige Situation sein. Es passiert nicht allzu oft, aber es kann ein Ärgernis sein, wenn es passiert. –