Kamikatze
Captain
- Registriert
- Okt. 2004
- Beiträge
- 3.708
Hey ihr!
Ich habe, wie der Titel schon besagt, ein recht unangenehmes Problem mit meinem Webprojekt mit mehreren Verbindungen.
Also zuerst einmal der Ablauf der Seite:
Das ursprüngliche Problem war, dass ich bei der Anmeldung eine NullPointerException bekam, wenn ich nach dem Laden der Seite (noch vor der Anmeldung) noch einmal aktualisiert habe. Das User-Objekt, das gespeichert wird, ist dann nämlich (aus bisher noch nicht bekannten Gründen
- vermutlich ein Problem mit der Session) nicht mehr vorhanden.
Also habe ich nun versucht diese Objekte in diesem Servlet (Backbone.java) als static zu deklarieren, damit sie auch sicher dauerhaft gespeichert werden.
So weit so gut, man konnte nun aktualisieren so oft man wollte, der User blieb erhalten. Auch war man danach nicht plötzlich wieder als der User zuvor angemeldet, wenn man sich inzwischen ab- und neu angemeldet hat.
Doch das dadurch entstandene Problem ist noch um einiges schlimmer.
Dass static-Variablen bis zum Ende des Programmes gelten - weil sie zur Klasse und nicht zur Instanz gehören - wusste ich natürlich schon, was ich nicht wusste ist, dass diese eine Variable von allen Verbindungen gemeinsam genutzt wird, ich war mich doch recht sicher, dass diese Variablen doch zumindest für jede Server-Verbindung (und somit für Benutzer) eigens existieren.
Tja... Tatsache ist aber, dass wenn sich nun jemand von einem anderen Rechner anmeldet und ein zweiter auf der Anmelde-Seite den Aktualisieren-Button im Browser betätigt, dieser dann auch angemeldet ist.
Tomcat 6.0
Java 1.5 (Source Level) + ZK 2.4.1 Freshley
Mit Quellcode möchte ich jetzt gleich im Eröffnungspost nicht gleich um mich werfen.
Hat jemand irgendwelche Tipps? Kann das richtig sein mit den static-Variablen?
Bin für jede Hilfestellung, die zur Erfassung des Täters führen, sehr dankbar.
Falls es trotzdem jemanden interessieren sollte - das ganze Projekt ist hier einsehbar. Der Kern des Systems ist Backbone.java, das auch zur Anmeldung am System dient. Im aktuell hochgeladenen Source sind die Variablen nicht als static deklariert.
Ich habe, wie der Titel schon besagt, ein recht unangenehmes Problem mit meinem Webprojekt mit mehreren Verbindungen.
Also zuerst einmal der Ablauf der Seite:
- Laden der Seite - Anmeldefeld (Benutzername + Passwort) erscheint
- Anmelden am System - User wird in einer Servlet-Variable gespeichert
- Aufruf einer anderen Seite, die den User ausliest und dessen Daten anzeigt
Das ursprüngliche Problem war, dass ich bei der Anmeldung eine NullPointerException bekam, wenn ich nach dem Laden der Seite (noch vor der Anmeldung) noch einmal aktualisiert habe. Das User-Objekt, das gespeichert wird, ist dann nämlich (aus bisher noch nicht bekannten Gründen
Also habe ich nun versucht diese Objekte in diesem Servlet (Backbone.java) als static zu deklarieren, damit sie auch sicher dauerhaft gespeichert werden.
So weit so gut, man konnte nun aktualisieren so oft man wollte, der User blieb erhalten. Auch war man danach nicht plötzlich wieder als der User zuvor angemeldet, wenn man sich inzwischen ab- und neu angemeldet hat.
Doch das dadurch entstandene Problem ist noch um einiges schlimmer.
Dass static-Variablen bis zum Ende des Programmes gelten - weil sie zur Klasse und nicht zur Instanz gehören - wusste ich natürlich schon, was ich nicht wusste ist, dass diese eine Variable von allen Verbindungen gemeinsam genutzt wird, ich war mich doch recht sicher, dass diese Variablen doch zumindest für jede Server-Verbindung (und somit für Benutzer) eigens existieren.
Tja... Tatsache ist aber, dass wenn sich nun jemand von einem anderen Rechner anmeldet und ein zweiter auf der Anmelde-Seite den Aktualisieren-Button im Browser betätigt, dieser dann auch angemeldet ist.
Tomcat 6.0
Java 1.5 (Source Level) + ZK 2.4.1 Freshley
Mit Quellcode möchte ich jetzt gleich im Eröffnungspost nicht gleich um mich werfen.
Hat jemand irgendwelche Tipps? Kann das richtig sein mit den static-Variablen?
Bin für jede Hilfestellung, die zur Erfassung des Täters führen, sehr dankbar.
Falls es trotzdem jemanden interessieren sollte - das ganze Projekt ist hier einsehbar. Der Kern des Systems ist Backbone.java, das auch zur Anmeldung am System dient. Im aktuell hochgeladenen Source sind die Variablen nicht als static deklariert.
Zuletzt bearbeitet: