Hallo !
Kenne die beteiligten Produkten und die Sprache Java nicht so genau, aber zur Modellierung faellt mir etwas ein:
Das Design wuerde ich als Model/View/Controller sehen
und wenn ich das rchtig verstanden habe wuerde das Singleton Aplikations-zentral und nicht nur innerhalb einer Sitzung die Persistenz verwalten.
Hab ich das richtig verstanden ?
Wenn das so ist muss das Singleton ( oder irgendein Objekt ) Nebenlaeufigkeit modellieren oder vielleicht moderieren.
Da stellt sich dann die Frage wem der Mutex (die Semaphore oder wie auch immer das unter Java heisst) "gehoert" also ob der Thread eines serverseitigen Agenten ( so koennte man das bauen ) auf eine Zugriff auf eine Singleton - Queue (?) wartet, oder ob das Singleton mit einem aktiven Thread selbst queues in den Agenten ausliest.
Fuer die Entwurfsentscheidung gibt's wohl ein deutliches Korrektiv
zum einen in der Datenbank, und zum anderen wird er der Hashtable
Hic !
Dies "zum einen[]... zum anderen" koennte Aufmerksamkeit erfordern.
RDBMS sind meist so aufgebaut, dass die Transakion aus Sicht des clients atomar wirkt (COMMIT).
Ist sie de facto nicht, aber dafuer gibt's dann Recovery-Mechanismen.
Wenn Du mittels dieses Singletons einen COMMIT implementierst "ziehst" Du Dir diese Aufgaben gleichsam von oben wieder in die Anwendung hinein.
Da wuerde ich das Singleton aktiv stellen !
Man kann den Thread ja vom Agenten aufwecken lassen damit er nicht grundlos rumidled, das ist threadsicher, wenn er schon laeuft passiert naemlich nix Neues.
Aber wie gesagt, ich weiss genau nicht wie das unter Java laeuft.
Damit der Benutzer dann nach seiner Transaktion auch die aktuelle Seite angezeigt bekommt, koennte man seinen Agenten im Adressruam des Servers als "dirty" kennzeichnen und dieses Flag vom Singleton-Thread zuruecksetzen lassen.
Das waere dann so ne Art COMMIT.
werden muessten - was m.M.n. einen erheblichen Performanzgewinn
Denke schon, Du spast Dir 1001 SELECT.
Gruss
Holger
PS.: Gibt eine imho gute Uebersicht ueber Entwurfs- und Architekturmuster http://www.vico.org/pages/PatronsDisseny.html; kennt Du die Seite ?