Werte Kollegen,
ich hoffe, dass ich mein Thema unter der richtigen Rubrik gepostet habe, da es sich im Prinzip nicht um ein reines Spring Problem, sondern eher um "Spring - JSF" Problem handelt. Sollte dies der falsche Platz für diesen Post sein, möge man mir dies verzeihen.
Nun zu meinem Problem. Ich entwickle ein Projekt, dass mit Spring Webflow in Verbindung mit JSF umgesetzt ist. Das Ziel dieses Projekts ist es, "menschliche" Spieler in eine vorhandene Simulationsumgebung, die auf einem externen Server läuft, teilnehmen zu lassen. Die Verbindung zu diesem Server läuft über JMS. (siehe hiezu die Grafik)
Eine meiner Hauptanforderungen ist es, dass die Applikation Multiuser tauglich sein muss, was leider mein hauptproblem darstellt.
Was ich bisher gemacht habe:
Habe eine Bean erstellt, die die Werte, welcher ein User im Browser eingibt aufnimmt (Username, ServerURL). Wenn der User auf den "connect" Button clickt, wird eine Methode besagter Bean ausgeführt, die versucht eine Connection zum Simulationsserver herzustellen. Dies mache ich, indem ich in meiner Bean eine externe Klasse referenziere, die dann die verbindung herstellt. Also ca so:
1) User klickt auf Button
Dies funktioniert eigentlich auch ganz gut. Das Problem ist nun, dass dieser Connection Service gleichzeitig Message Reciver der JMS Nachrichten ist. Das heißt, es können vom SimServer Nachrichten kommen, die sagen, dass sich der "amount" eines bestimmten users verändert hat. Diese Änderung will ich natürlich in der UI anzeigen. Habe dies versucht, indem ich der Klasse ConnectionService einfach eine Referenz der Klasse UserBean mitgebe im Sinne von
und dann einfach den amount von user via der setter methode update. Und genau hier ist mein Problem: Anscheinend gibt es nun im System zwei unterschiedliche Instanzen der Klasse UserBean, denn wenn ich den amount durch die Klasse ConnectionService update, wird das korrekte Ergebnis nicht in der UI angezeigt. Das der amount upgedatet wird weiß ich mit Sicherheit (habe in der setter ein println()).
Ich weiß nicht, wo hier mein Denkfehler ist. Ich denke, dass da die Scopes von JSF und Spring irgendwas damit zu tun haben... Sitze nunmehr eine ganze Woche an diesem Problem und habe schon einiges an Literatur durchforstet, doch leider ohne Erfolg.
Für Vorschläge und konkrete Antworten wäre ich von Herzen dankbar.
Vielen Dank,
lg Nikolaus
ich hoffe, dass ich mein Thema unter der richtigen Rubrik gepostet habe, da es sich im Prinzip nicht um ein reines Spring Problem, sondern eher um "Spring - JSF" Problem handelt. Sollte dies der falsche Platz für diesen Post sein, möge man mir dies verzeihen.
Nun zu meinem Problem. Ich entwickle ein Projekt, dass mit Spring Webflow in Verbindung mit JSF umgesetzt ist. Das Ziel dieses Projekts ist es, "menschliche" Spieler in eine vorhandene Simulationsumgebung, die auf einem externen Server läuft, teilnehmen zu lassen. Die Verbindung zu diesem Server läuft über JMS. (siehe hiezu die Grafik)

Eine meiner Hauptanforderungen ist es, dass die Applikation Multiuser tauglich sein muss, was leider mein hauptproblem darstellt.
Was ich bisher gemacht habe:
Habe eine Bean erstellt, die die Werte, welcher ein User im Browser eingibt aufnimmt (Username, ServerURL). Wenn der User auf den "connect" Button clickt, wird eine Methode besagter Bean ausgeführt, die versucht eine Connection zum Simulationsserver herzustellen. Dies mache ich, indem ich in meiner Bean eine externe Klasse referenziere, die dann die verbindung herstellt. Also ca so:
1) User klickt auf Button
Java:
public class UserBean implements Serializable{
private String userName;
private String serverURL;
private double amount;
getter & setter
public boolean connect(){
ConnectionService connection = new ConnectionService();
connection.connect();
}
}
Dies funktioniert eigentlich auch ganz gut. Das Problem ist nun, dass dieser Connection Service gleichzeitig Message Reciver der JMS Nachrichten ist. Das heißt, es können vom SimServer Nachrichten kommen, die sagen, dass sich der "amount" eines bestimmten users verändert hat. Diese Änderung will ich natürlich in der UI anzeigen. Habe dies versucht, indem ich der Klasse ConnectionService einfach eine Referenz der Klasse UserBean mitgebe im Sinne von
Java:
public ConnectionService(UserBean user){}
und dann einfach den amount von user via der setter methode update. Und genau hier ist mein Problem: Anscheinend gibt es nun im System zwei unterschiedliche Instanzen der Klasse UserBean, denn wenn ich den amount durch die Klasse ConnectionService update, wird das korrekte Ergebnis nicht in der UI angezeigt. Das der amount upgedatet wird weiß ich mit Sicherheit (habe in der setter ein println()).
Ich weiß nicht, wo hier mein Denkfehler ist. Ich denke, dass da die Scopes von JSF und Spring irgendwas damit zu tun haben... Sitze nunmehr eine ganze Woche an diesem Problem und habe schon einiges an Literatur durchforstet, doch leider ohne Erfolg.
Für Vorschläge und konkrete Antworten wäre ich von Herzen dankbar.
Vielen Dank,
lg Nikolaus
Zuletzt bearbeitet: