Hallo,
ich habe eine Frage bezüglich des Session Management mit Servlets.
Innerhalb der Servlet Klasse ist es ja kein Problem die aktuelle Session zu bekommen.
Mit this.getThreadLocalRequest().getSession() erhält man wie erwartet seine Session.
Wie soll ich aber die Session innerhalb von anderen Klassen bekommen, ohne die Session durch alle Funktionen durchschleifen zu müssen?
Es sollte sich in diesem Fall der ChatraumManager um das Setzen des Absenders kümmern und nicht das Servlet.
Meine Idee war es eine static CurrentUser Klasse zu schreiben, aber das funktioniert ja nicht, weil sich alle requests die selben Variablen teilen.
Um das ganze zu umschiffen würde mir nur noch eine Hash map mit Thread id und session einfallen,
ist aber meiner Meinung nach auch keine schöne Lösung, da ich dann in in jeder remoteService Funktion die eigene initSession() aufrufen müsste.
Bin für alle Tipps dankbar
ich habe eine Frage bezüglich des Session Management mit Servlets.
Innerhalb der Servlet Klasse ist es ja kein Problem die aktuelle Session zu bekommen.
Mit this.getThreadLocalRequest().getSession() erhält man wie erwartet seine Session.
Wie soll ich aber die Session innerhalb von anderen Klassen bekommen, ohne die Session durch alle Funktionen durchschleifen zu müssen?
Java:
public class GreetingServiceImpl extends RemoteServiceServlet{
private ChatraumManager chatManager;
public GreetingServiceImpl(){
chatManager = new ChatraumManager();
}
//Derzeitige implementierung
public void sendMsg(int raum_id, String nachricht) {
String absender = this.getThreadLocalRequest().getSession().getId();
chatManager.sendMsg(absender,raum_id, nachricht);
}
//Gewünschte Implementierung
public void sendMsg(int raum_id, String nachricht) {
chatManager.sendMsg(raum_id, nachricht);
}
}
Meine Idee war es eine static CurrentUser Klasse zu schreiben, aber das funktioniert ja nicht, weil sich alle requests die selben Variablen teilen.
Um das ganze zu umschiffen würde mir nur noch eine Hash map mit Thread id und session einfallen,
ist aber meiner Meinung nach auch keine schöne Lösung, da ich dann in in jeder remoteService Funktion die eigene initSession() aufrufen müsste.
Bin für alle Tipps dankbar