Hallo ich habe wirklich große Problme mit meiner Multi-Thread-Anwendung und Hibernate. Ich habe eine Anwendung geschrieben die von einer entfernten Message-Queue XML-Nachrichten abholt und danach in eine Datenbank speichert, von woaus sie danach von eimem Fremdsystem verarbeitet werden.
Um möglichst viele Messages pro Sekunde zu verarbeiten arbeite ich mit mehren Threads.
Folgender Code wird von jedem Thread zum speichern der XML-Nachricht ausgeführt:
Code:
// Session starten
session = sessionFactory.openSession();
// Transaktion starten
tx = session.beginTransaction();
dom4jSession = session.getSession(EntityMode.DOM4J);
// Schreibe Message in die DB
Node rootNode = document.getRootElement();
dom4jSession.save(entity, rootNode);
// Beende Transaktion und Session
tx.commit();
session.close();
Nun geschieht folgendes:
Starte ich die Anwendung mit 1,2,3 oder 4 Threads ist alles in ordnung und
läuft reibungslos. Doch sobeit ich mehr als 4 Threads starte bleiben ab und zu alle Threads im Aufruf
dom4jSession.save(entity, rootNode); stecken und es dauert 4-5 Sekunden bis die Verarbeitung weitergeht.
Synchronisiere ich den Aufruf
dom4jSession.save(entity, rootNode); läuft ebenfalls alles reibungslos selbst bei 5 Threads und mehr.
Es werden lediglich Daten durch inserts in die Datenbank gespeichert somit schliesse ich Deadlocks aus!
Ich suche wirklich schon seit 3 Tagen nach dem Fehler und hab mir wirklich sämtliche Logs angesehen und kann nichts finden.
Wenn jemand eine Idee hat ich bin für alles Dankbar!!!
Hibernate version: 3.1 final Name and version of the database you are using: Oracle10[/code]