Are you sure that you are able to keep the session alive always? As if the session is dying then certainly the unbounding will take place.
-----Original Message----- From: HC Hammerstoft, InterResearch A/S [mailto:[EMAIL PROTECTED]] Sent: Thursday, July 18, 2002 3:30 PM To: [EMAIL PROTECTED] Subject: HttpSessionBindingListener behaves differently in test and production Hi, I also have problems with HttpSessionBindingListener. We run a web application where the main window refreshes itself after 25 minutes. The session timeout in web.xml is set to 30 minutes. The refresh is to keep the session tracking alive, so the user is not logged out as long as the main window is open. In the session we have a single object (params) that implements HttpSessionBindingListener in order to initialize and cleanup the params. The problem is that when run locally (JBuilder6 and Tomcat 3.2.3) and on internal test server (Tomcat 3.2.3 standalone) sessions are kept alive fine. But when deployed on our production server (Tomcat 3.2.3 standalone) the session is unbound after approx. 3300 seconds...?? I have made a simple test Servlet (see below), which behaves the same way. Any input will be much appreciated. package net.defgo.test; import javax.servlet.http.*; import java.io.PrintWriter; import java.util.Date; import java.text.SimpleDateFormat; public class TestServlet extends HttpServlet { private static final SimpleDateFormat timeFormatter = new SimpleDateFormat("HH:mm:ss"); //Service the request public void doGet(HttpServletRequest request, HttpServletResponse response) { try { response.setContentType("text/html"); PrintWriter out = response.getWriter(); HttpSession session = request.getSession(); BoundObjectSerializable boSession = (BoundObjectSerializable) session.getAttribute("boSessionDef"); if (boSession == null) { boSession = new BoundObjectSerializable("js version"); session.setAttribute("boSessionDef", boSession); System.out.println(timeFormatter.format(new Date()) + ", boSession = " + boSession + " created"); } System.out.println(timeFormatter.format(new Date()) + ", id=" + session.getId()); response.setDateHeader("Expires", 0); response.setHeader("Pragma", "no-cache"); if (request.getProtocol().equals("HTTP/1.1")) { response.setHeader("Cache-Control", "no-cache"); } out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www.w3.org/TR/REC-html40/loose.dtd\">"); out.println("<html>"); out.println("<head>"); out.println("<meta name=\"Language\" content=\"da,en-us\">"); out.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">"); out.println("<script language=\"JavaScript\"><!--"); out.println("var tID = '';\n"); out.println("function executeTimer() {"); out.println(" location.href = '" + response.encodeURL(request.getRequestURI()) + "';"); out.println("}"); out.println("//--></script>\n"); out.println("</head>"); out.println("<body onLoad=\"tID = setTimeout('executeTimer()',1500000)>"); // 1500 secs = 25 min out.println("<p>msg = " + boSession.getSomething() + "</p>"); out.println("</body>"); out.println("</html>"); out.close(); } catch (Exception e) { e.printStackTrace(System.out); } // catch } } package net.defgo.test; import javax.servlet.http.HttpSessionBindingListener; import javax.servlet.http.HttpSessionBindingEvent; import java.text.SimpleDateFormat; import java.util.Date; import java.io.Serializable; public class BoundObjectSerializable implements HttpSessionBindingListener, Serializable { private static final SimpleDateFormat timeFormatter = new SimpleDateFormat("HH:mm:ss"); private String something = null; private int counter; private long started; public BoundObjectSerializable(String something) { this.something = something; started = System.currentTimeMillis(); } public String getSomething() { return something + " counter=" + counter++ + " session duration = " + (System.currentTimeMillis() - started)/1000 + " secs"; } public void valueBound (HttpSessionBindingEvent event) { System.out.println (timeFormatter.format(new Date()) + ", valueBound: I've been bound to \"" + event.getName () + "\" for session id: " + (event.getSession()).getId ()); } public void valueUnbound (HttpSessionBindingEvent event) { System.out.println (timeFormatter.format(new Date()) + ", valueUnbound: I've been unbound from \"" + event.getName () + "\" for session id: " + (event.getSession ()).getId () + " session duration = " + (System.currentTimeMillis() - started)/1000 + " secs" ); } } Best regards HC Hammerstoft ___________________________________________________________________________ To unsubscribe, send email to [EMAIL PROTECTED] and include in the body of the message "signoff SERVLET-INTEREST". Archives: http://archives.java.sun.com/archives/servlet-interest.html Resources: http://java.sun.com/products/servlet/external-resources.html LISTSERV Help: http://www.lsoft.com/manuals/user/user.html ___________________________________________________________________________ To unsubscribe, send email to [EMAIL PROTECTED] and include in the body of the message "signoff SERVLET-INTEREST". Archives: http://archives.java.sun.com/archives/servlet-interest.html Resources: http://java.sun.com/products/servlet/external-resources.html LISTSERV Help: http://www.lsoft.com/manuals/user/user.html
