melaquias    01/03/26 06:47:58

  Modified:    src/share/org/apache/tomcat/modules/session
                        SimpleSessionStore.java
  Log:
  Temporary(?) fix to stop crashes when creating a new Session in embedded use of 
Jasper (i.e. as standalone JspServlet ).  Problem may occur in other situations as 
well, I'm not sure.
  
  Problem:  When SimpleSessionStore.SimpleSessionManager.getNewSession() is called (as 
a result of a call to request.getSession(), the session ID of the new session has not 
been set.  Since it is implemented as a MessageBytes object, the .toString() method to 
get a string representation of the session id returns null.  When getNewSession() 
tries to use this value as a key into the sessions hashtable, a NullPointerException 
is thrown.
  
  Fix:  To stop the crashing, I've added a line to "getNewSession()" to replace a null 
value for the string representation with the literal "null".  This should NOTbe 
considered a fix of the underlying problem:  Why is newId == null (i.e. why is the new 
session's id not initialized)?  The implication is that request.getSession() is broken 
in jasper right now, at least when using Jasper independent of tomcat.
  
  Revision  Changes    Path
  1.15      +5 -1      
jakarta-tomcat/src/share/org/apache/tomcat/modules/session/SimpleSessionStore.java
  
  Index: SimpleSessionStore.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/session/SimpleSessionStore.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- SimpleSessionStore.java   2001/03/23 02:24:36     1.14
  +++ SimpleSessionStore.java   2001/03/26 14:47:58     1.15
  @@ -337,6 +337,11 @@
            // The id will be set by one of the modules
            String newId=session.getId().toString();
            
  +//XXXXX - the following is a temporary fix only!  Underlying problem
  +//        is:  Why is the newId==null?
  +
  +         newId=(newId==null)?"null":newId;
  +         
            // What if the newId belongs to an existing session ?
            // This shouldn't happen ( maybe we can try again ? )
            ServerSession oldS=findSession( newId );
  @@ -344,7 +349,6 @@
                // that's what the original code did
                oldS.setState( ServerSession.STATE_EXPIRED );
            }
  -         
            sessions.put( newId, session );
            return (session);
        }
  
  
  

Reply via email to