Hallo,
ich habe eine Frage bezüglich Session Tracking. Und zwar habe ich eine Hauptanwendung, die die Benutzerverwaltung übernimmt und weitere Anwendungen innerhalb, die durch einen erfolgreichen Login erreicht werden können. Nun habe ich ein Problem mit einer inneren Anwendung, dass die Sessionübergabe nicht funktioniert bzw. die jsessionid verloren geht. Die Hauptanwendung sowie die inneren Applikationen haben einen eigenen Kontext.
Um der Sache auf den Grund zu gehen habe ich mal folgende Methoden ausprobiert:
Komischerweise erkennt er den Cookie und gibt auch die jsessionid zurück. Trotzdem erzeugt die ServletControler Klasse der Unteranwendung eine neue Session.
Hier ein Auszug der ServletControler Klasse die dafür zuständig ist:
Ich hoffe jemand hat eine Idee. Wenn weitere Informationen notwendig sein sollten liefere ich die gerne nach.
P.s. Das ist nicht mein eigenes Projekt...
Dank im voraus und Grüße
starr
ich habe eine Frage bezüglich Session Tracking. Und zwar habe ich eine Hauptanwendung, die die Benutzerverwaltung übernimmt und weitere Anwendungen innerhalb, die durch einen erfolgreichen Login erreicht werden können. Nun habe ich ein Problem mit einer inneren Anwendung, dass die Sessionübergabe nicht funktioniert bzw. die jsessionid verloren geht. Die Hauptanwendung sowie die inneren Applikationen haben einen eigenen Kontext.
Um der Sache auf den Grund zu gehen habe ich mal folgende Methoden ausprobiert:
Code:
request.isRequestedSessionIdValid() --> false
request.getRequestedSessionId() --> erhalte die jsessionid aus dem cookie
request.isRequestedSessionIdFromCookie() --> true
request.isRequestedSessionIdFromURL() --> false
request.isRequestedSessionIdValid() --> false
Komischerweise erkennt er den Cookie und gibt auch die jsessionid zurück. Trotzdem erzeugt die ServletControler Klasse der Unteranwendung eine neue Session.
Hier ein Auszug der ServletControler Klasse die dafür zuständig ist:
Code:
protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
{
res.setContentType("text/html");
PrintWriter out = res.getWriter();
HttpSession session = req.getSession();
controlsession = new SessionBean();
setnumPhrasen();
ServletContext cxt = getServletContext();
RequestDispatcher rd = cxt.getRequestDispatcher("/beziehungstypen.jsp");
int i = 0;
if (session.isNew())
{
// nach 5 Minuten wird die Session beendet
session.setMaxInactiveInterval(600);
session.setAttribute("controlsession", controlsession);
if(controlsession.setNaechstePhrase())
{
rd.include(req, res);
}
}
else
{
controlsession = (SessionBean) session.getAttribute("controlsession");
/*Unterbindet das Reloaden und Zurückspringen der Seite*/
if(req.getParameter("reload")!=null && Integer.parseInt(req.getParameter("reload"))==(controlsession.getPhrasenNummer() ) )
{
if ((req.getParameter("submit") != null) && (req.getParameter("submit").equals("Antwort")))
{
ArrayList antworten=controlsession.getKorrekteAntwort();
Iterator iter_antworten = antworten.iterator();
for(i=0;i<controlsession.getAnzahlAktuelleEntitiesPaare();i++)
{
String b=(String)iter_antworten.next();
controlsession.setAntworten(req.getParameter("answer"+i));
if (req.getParameter("answer"+i).equals(b))
{
controlsession.setEntitiesKorrekt(true);
controlsession.setNumKorrekteAntwortenEntities(controlsession.getNumKorrekteAntwortenEntities()+1);
}
else
{
controlsession.setEntitiesKorrekt(false);
}
}
if(controlsession.getAnzahlAktuelleEntitiesPaare()==controlsession.getNumKorrekteAntwortenEntities())
{
controlsession.setLetztePhraseKorrekt(true);
controlsession.setNumKorrekteAntworten(controlsession.getNumKorrekteAntworten()+1);
}
else
{
controlsession.setLetztePhraseKorrekt(false);
}
if(controlsession.getGenutzePhrasen().size() == numPhrasen.intValue() || controlsession.getGenutzePhrasen().size()==controlsession.getAnzahlPhrasenDB())
{
rd = cxt.getRequestDispatcher("/beziehungstypen_end.jsp");
rd.include(req, res);
session.invalidate();
}
else
{
controlsession.setReloadForm(false);
rd = cxt.getRequestDispatcher("/beziehungstypen_check.jsp");
rd.include(req, res);
return;
}
}
else if ((req.getParameter("submit") != null) && (req.getParameter("submit").equals("Weiter")))
{
if(controlsession.setNaechstePhrase())
{
controlsession.setReloadForm(false);
rd.include(req, res);
return;
}
else
{
rd = cxt.getRequestDispatcher("/beziehungstypen_end.jsp");
rd.include(req, res);
session.invalidate();
}
}
else
{
if(controlsession.getGenutzePhrasen().size() == numPhrasen.intValue() || controlsession.getGenutzePhrasen().size()==controlsession.getAnzahlPhrasenDB())
{
rd = cxt.getRequestDispatcher("/beziehungstypen_end.jsp");
rd.include(req, res);
session.invalidate();
}
else
{
rd.include(req, res);
}
}
}
else
{
controlsession.setReloadForm(true);
rd.include(req, res);
}
}
out.flush();
}
Ich hoffe jemand hat eine Idee. Wenn weitere Informationen notwendig sein sollten liefere ich die gerne nach.
P.s. Das ist nicht mein eigenes Projekt...
Dank im voraus und Grüße
starr