JSP Session verloren bei DNS Servernamen & IE

crashfinger

Mitglied
Hallo zusammen!

Ich habe folgendes Problem:
In meiner Firma laufen jede Menge JSP-Anwendungen. Diese werden z.Z. über die IP der jeweiligen Tomcat-Server aufgerufen - funktioniert auch wunderbar.
Nun wurden für diese Server DNS-Namen vergeben und der Aufruf der Anwendungen sollte jetzt über den DNS-Namen erfolgen.

Firefox-User haben damit auch keine Probleme, aber User die den IE nutzen.
Bei IE-Usern geht beim Aufruf einer JSP-Seite die Session verloren und damit auch alle Daten der session-basierenden Beans.

Hat jemend hiermit erfahrung?

Server: Apache Tomcat/6.0.18
JVM: 1.6.0_10-b33

Gruß
Crash
 
Zuletzt bearbeitet:
Pruef mal wann und wo das JSESSIONID Cookie gesetzt/geloescht/veraendert wird. Im IE9 kannst du das mit dem 'Developer Tool' (mit F12) analysieren.
 
Beim Aufruf jeder neuen Seite wird eine neue Session-ID erzeugt.

Hier ein Code-Beispiel für zwei JSP-Seiten die Informationen zur Session anzeigen

index.html
HTML:
<html>
	<head><title></title></head>
	<frameset id="base"  cols="600, *"	 cols="*" frameborder="no" border="0" framespacing="0">
		<frame name="frame1" src="page1.jsp">
		<frame name="frame2" src="page2.jsp">
	</frameset>
	<noframes></noframes>
</html>

page1.jsp
HTML:
<%@page errorPage="errorPage.jsp" %>
<html>
	<head><title>page1.jsp</title></head>
	<body>
		<form method="post" action="page2.jsp" target="frame2"><input type="submit"></form>
		<p>session-object</p>
		<table style="border-style: none; margin-top: 10px;">
			<tbody>
				<tr><td>Id</td><td><%=session.getId() %></td></tr>
				<tr><td>CreationTime</td><td><%=session.getCreationTime() %></td></tr>
				<tr><td>MaxInactiveInterval</td><td><%=session.getMaxInactiveInterval() %></td></tr>
				<tr><td>ServletContext</td><td><%=session.getServletContext() %></td></tr>
			</tbody>
		</table>
	</body>
</html>

page2.jsp
HTML:
<%@page errorPage="errorPage.jsp" %>
<html>
	<head><title>page2.jsp</title></head>
	<body>
		<form method="post" action="page1.jsp" target="frame1"><input type="submit"></form>
		<p>session-object</p>
		<table style="border-style: none; margin-top: 10px;">
			<tbody>
				<tr><td>Id</td><td><%=session.getId() %></td></tr>
				<tr><td>CreationTime</td><td><%=session.getCreationTime() %></td></tr>
				<tr><td>MaxInactiveInterval</td><td><%=session.getMaxInactiveInterval() %></td></tr>
				<tr><td>ServletContext</td><td><%=session.getServletContext() %></td></tr>
			</tbody>
		</table>
	</body>
</html>

Durch anklicken des Submit-Buttons wird jeweils die andere Seite neu aufgerufen.
Im IE ändert sich jedes Mal die SessionID - beim Firefox bleibt sie erhalten.
Bedingung hierfür: Der Server wird über einen DNS Namen aufgerufen, bei aufruf über die IP des Servers bleiben bei beiden Browsern die SessionID's erhalten.
 
Zuletzt bearbeitet:
Wie gesagt es waere interessant zu wissen, welche Cookies der Browser mitschickt und wann das Cookie geloescht/ueberschrieben wird.

Wie sieht die Infrastruktur aus? Greifst du direkt auf den Server zu oder via WebServer (Apache)? Gibt es einen Proxyserver dazwischen?
 
Im Moment greife ich direkt auf den Tomcat zu. Später erfolgt der zugriff über einen Domio-Webserver auf dem ein CMS läuft.

Wie bekomme ich raus welche Cookies mitgeschickt werden?
 
Der IE ist leider nicht so Entwicklerfreundlich. Aber I'm IE9 gibts das DeveloperTool (F12), damit kannst du die Kommunikation zwischen Browser und Server mitverfolgen. Du kannst die Headerinformationen wie auch den Content jedes Requests und Response ansehen. Damit solltest du rausfinden können wann und wo genau der Browser das Cookie verliert.
 
Ich vermute, dass in den Actions Deiner Formulare die IP-Adresse des Servers erscheint. Wenn Du nun die DNS-Adresse im Adressfeld eingibst, aber beim Submit der Request an die IP-Adresse gesendet wird, denkt der IE, dass es sich um einen Request zu einem anderen Server handelt und schickt dementsprechend die Session-Daten nicht mit. Der FF ist da wohl schlauer.

Kontrollier darum bitte mal den gerenderten HTML-Output. Falls meine Vermutung richtig ist, meld Dich nochmal.
 

Neue Themen


Zurück
Oben