jfclere     2002/12/05 02:41:35

  Modified:    catalina/src/share/org/apache/catalina/valves
                        PersistentValve.java
  Log:
  Now it works as I excepted it. I will move it to 5.0 soon.
  
  Revision  Changes    Path
  1.2       +29 -9     
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/PersistentValve.java
  
  Index: PersistentValve.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/PersistentValve.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- PersistentValve.java      29 Nov 2002 08:30:44 -0000      1.1
  +++ PersistentValve.java      5 Dec 2002 10:41:35 -0000       1.2
  @@ -174,11 +174,31 @@
           HttpServletRequest hreq = (HttpServletRequest) request.getRequest();
           String sessionId = hreq.getRequestedSessionId();
           Manager manager = context.getManager();
  -        if (sessionId != null) {
  -            if (manager != null) {
  -                Session session = manager.findSession(sessionId);
  -                if ((session != null) && session.isValid())
  -                    session.access();
  +        if (sessionId != null && manager != null) {
  +            if (manager instanceof PersistentManager) {
  +                Store store = ((PersistentManager) manager).getStore();
  +                if (store != null) {
  +                    Session session = null;
  +                    try {
  +                        session = store.load(sessionId);
  +                    } catch (Exception e) {
  +                        log("deserializeError");
  +                    }
  +                    if (session != null) {
  +                        if (!session.isValid() ||
  +                            isSessionStale(session, System.currentTimeMillis())) {
  +                            log("session swapped in is invalid or expired");
  +                            session.expire();
  +                            store.remove(sessionId);
  +                        } else {
  +                            session.setManager(manager);
  +                            // session.setId(sessionId); Only if new ???
  +                            manager.add(session);
  +                            // ((StandardSession)session).activate();
  +                            session.access();
  +                        }
  +                    }
  +                }
               }
           }
           log("sessionId: " + sessionId);
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to