NicoCollard
Grünschnabel
Hallo zusammen,
vielleicht kann mir hier jemand helfen.
Ich verwende in meiner Java-Client-Anwendung iBatis als Persistenz-Framework und bin auch bisher sehr zufrieden gewesen. Jetzt habe ich die Situation, dass ich mit mehreren Programm-Instanzen auf der Datenbank (H2 und zu Testzwecken auch die MySQL) arbeiten möchte. Der Ablauf soll (sehr vereinfacht gesprochen) der sein, dass die erste Instanz gewisse Aufgaben übernimmt und dies auch den anderen Instanzen mitteilt. Die zuständige Instanz schreibt also bspw. alle 30 Sekunden in eine entsprechende DB-Tabelle seinen Namen und zählt einen Counter hoch. Alle weiteren und neuen Instanzen sollen jetzt regelmäßig schauen, ob die zuständige Instanz noch da ist (Überprüfung über die DB - hat sich der Counter erhöht).
Hier kommt jetzt mein Problem: Obwohl ich für iBatis eingestellt habe, dass kein Cache verwendet werden soll, greifen die weiteren/neuen Instanzen immer auf das gleiche Objekt (auch gleiche ID) aus dem Cache zu, so dass sie nicht mitbekommen, dass der Counter sich erhöht und die zuständige Instanz noch lebt. Für Select-Anfragen scheint der Cache (auf oberster Ebene) immer aktiviert zu sein.
Wenn ich vor meinem select-Aufruf ein clearCache() oder commit() auf die SqlSession ausführe, dann funktioniert mein Programmablauf, wie gewünscht.
Hatte jemand ähnliche Schwierigkeiten mit iBatis?
Vielen Dank für Eure Hilfe...
Nico
vielleicht kann mir hier jemand helfen.
Ich verwende in meiner Java-Client-Anwendung iBatis als Persistenz-Framework und bin auch bisher sehr zufrieden gewesen. Jetzt habe ich die Situation, dass ich mit mehreren Programm-Instanzen auf der Datenbank (H2 und zu Testzwecken auch die MySQL) arbeiten möchte. Der Ablauf soll (sehr vereinfacht gesprochen) der sein, dass die erste Instanz gewisse Aufgaben übernimmt und dies auch den anderen Instanzen mitteilt. Die zuständige Instanz schreibt also bspw. alle 30 Sekunden in eine entsprechende DB-Tabelle seinen Namen und zählt einen Counter hoch. Alle weiteren und neuen Instanzen sollen jetzt regelmäßig schauen, ob die zuständige Instanz noch da ist (Überprüfung über die DB - hat sich der Counter erhöht).
Hier kommt jetzt mein Problem: Obwohl ich für iBatis eingestellt habe, dass kein Cache verwendet werden soll, greifen die weiteren/neuen Instanzen immer auf das gleiche Objekt (auch gleiche ID) aus dem Cache zu, so dass sie nicht mitbekommen, dass der Counter sich erhöht und die zuständige Instanz noch lebt. Für Select-Anfragen scheint der Cache (auf oberster Ebene) immer aktiviert zu sein.
Wenn ich vor meinem select-Aufruf ein clearCache() oder commit() auf die SqlSession ausführe, dann funktioniert mein Programmablauf, wie gewünscht.
Hatte jemand ähnliche Schwierigkeiten mit iBatis?
Vielen Dank für Eure Hilfe...
Nico
Zuletzt bearbeitet: