You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by cr...@locus.apache.org on 2000/10/07 21:13:52 UTC

cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session StandardManager.java StandardSession.java

craigmcc    00/10/07 12:13:51

  Modified:    .        RELEASE-NOTES-4.0-M2.txt
               catalina/src/share/org/apache/catalina/loader
                        StandardLoader.java
               catalina/src/share/org/apache/catalina/session
                        StandardManager.java StandardSession.java
  Log:
  Restore the ability of Catalina to persist sessions across a context
  reload and/or a server restart.  This ability was disrupted when Catalina
  went to a multi-classloader architecture, because the session
  implementation class (org.apache.catalina.session.StandardSession) was no
  longer visible on the webapp class path, so it couldn't be restored.
  The new technique makes this unnecessary.
  
  Revision  Changes    Path
  1.6       +13 -2     jakarta-tomcat-4.0/RELEASE-NOTES-4.0-M2.txt
  
  Index: RELEASE-NOTES-4.0-M2.txt
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/RELEASE-NOTES-4.0-M2.txt,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- RELEASE-NOTES-4.0-M2.txt	2000/10/07 18:14:51	1.5
  +++ RELEASE-NOTES-4.0-M2.txt	2000/10/07 19:13:44	1.6
  @@ -3,7 +3,7 @@
                               Release Notes
                               =============
   
  -$Id: RELEASE-NOTES-4.0-M2.txt,v 1.5 2000/10/07 18:14:51 craigmcc Exp $
  +$Id: RELEASE-NOTES-4.0-M2.txt,v 1.6 2000/10/07 19:13:44 craigmcc Exp $
   
   
   ============
  @@ -64,7 +64,8 @@
   Catalina now includes a JMX compatible MBean
   (org.apache.catalina.startup.CatalinaManager) that wraps the standard startup
   class (org.apache.catalina.startup.Catalina), making Catalina manageable in a
  -JMX agent.
  +JMX agent.  You can also use JMX to manage an integrated instance of the
  +org.apache.catalina.startup.Embedded class.
   
   Jasper:  Expanded Acceptance of XML Syntax
   ------------------------------------------
  @@ -155,6 +156,16 @@
   Catalina:  If a servlet threw an exception after it had grabbed the writer
   with response.getWriter(), the exception report would silently be suppressed.
   This has been corrected.
  +
  +Catalina:  Sending HTTP headers now forces the response to be considered
  +as committed.
  +
  +Catalina:  Restore the ability to persist sessions and their attributes across
  +a context reload or a server restart, the same way that Tomcat 3.x can do it.
  +This ability was disrupted when Catalina changed to a multi-classloader scheme
  +because the org.apache.catalina.session.StandardSession class was not visible
  +to the web app class loader.  Sessions can now be saved and restored without
  +requiring this capability.
   
   
   ==============================
  
  
  
  1.9       +4 -6      jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardLoader.java
  
  Index: StandardLoader.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardLoader.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- StandardLoader.java	2000/10/01 03:07:03	1.8
  +++ StandardLoader.java	2000/10/07 19:13:46	1.9
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardLoader.java,v 1.8 2000/10/01 03:07:03 craigmcc Exp $
  - * $Revision: 1.8 $
  - * $Date: 2000/10/01 03:07:03 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/loader/StandardLoader.java,v 1.9 2000/10/07 19:13:46 craigmcc Exp $
  + * $Revision: 1.9 $
  + * $Date: 2000/10/07 19:13:46 $
    *
    * ====================================================================
    *
  @@ -99,7 +99,7 @@
    * is not present, the system class loader will be used instead.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.8 $ $Date: 2000/10/01 03:07:03 $
  + * @version $Revision: 1.9 $ $Date: 2000/10/07 19:13:46 $
    */
   
   public final class StandardLoader
  @@ -546,8 +546,6 @@
   	    for (int i = 0; i < repositories.length; i++)
   		classLoader.addRepository(repositories[i]);
   	    classLoader.addRestricted("org.apache.catalina.");
  -	    classLoader.addAllowed
  -		("org.apache.catalina.session.StandardSession");
   	    classLoader.addSystem("javax.servlet.");
   	    if (classLoader instanceof Lifecycle)
   		((Lifecycle) classLoader).start();
  
  
  
  1.3       +10 -9     jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardManager.java
  
  Index: StandardManager.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardManager.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- StandardManager.java	2000/08/24 23:57:04	1.2
  +++ StandardManager.java	2000/10/07 19:13:50	1.3
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardManager.java,v 1.2 2000/08/24 23:57:04 craigmcc Exp $
  - * $Revision: 1.2 $
  - * $Date: 2000/08/24 23:57:04 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardManager.java,v 1.3 2000/10/07 19:13:50 craigmcc Exp $
  + * $Revision: 1.3 $
  + * $Date: 2000/10/07 19:13:50 $
    *
    * ====================================================================
    *
  @@ -104,7 +104,7 @@
    * <code>stop()</code> methods of this class at the correct times.
    *
    * @author Craig R. McClanahan
  - * @version $Revision: 1.2 $ $Date: 2000/08/24 23:57:04 $
  + * @version $Revision: 1.3 $ $Date: 2000/10/07 19:13:50 $
    */
   
   public final class StandardManager
  @@ -147,8 +147,7 @@
        * temporary working directory provided by our context, available via
        * the <code>javax.servlet.context.tempdir</code> context attribute.
        */
  -    //    private String pathname = "sessions.ser";
  -    private String pathname = null;
  +    private String pathname = "SESSIONS.ser";
   
   
       /**
  @@ -525,7 +524,8 @@
   		Integer count = (Integer) ois.readObject();
   		int n = count.intValue();
   		for (int i = 0; i < n; i++) {
  -		    Session session = (Session) ois.readObject();
  +		    StandardSession session = new StandardSession(this);
  +                    session.readObjectData(ois);
   		    session.setManager(this);
   		    sessions.put(session.getId(), session);
   		}
  @@ -623,8 +623,9 @@
   		oos.writeObject(new Integer(sessions.size()));
   		Iterator elements = sessions.values().iterator();
   		while (elements.hasNext()) {
  -		    Session session = (Session) elements.next();
  -		    oos.writeObject(session);
  +		    StandardSession session =
  +                        (StandardSession) elements.next();
  +                    session.writeObjectData(oos);
   		}
   	    } catch (IOException e) {
   		if (oos != null) {
  
  
  
  1.4       +39 -4     jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardSession.java
  
  Index: StandardSession.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardSession.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- StandardSession.java	2000/08/18 19:42:19	1.3
  +++ StandardSession.java	2000/10/07 19:13:50	1.4
  @@ -1,7 +1,7 @@
   /*
  - * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardSession.java,v 1.3 2000/08/18 19:42:19 craigmcc Exp $
  - * $Revision: 1.3 $
  - * $Date: 2000/08/18 19:42:19 $
  + * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/StandardSession.java,v 1.4 2000/10/07 19:13:50 craigmcc Exp $
  + * $Revision: 1.4 $
  + * $Date: 2000/10/07 19:13:50 $
    *
    * ====================================================================
    *
  @@ -108,7 +108,7 @@
    * @author Craig R. McClanahan
    * @author Sean Legassick
    * @author <a href="mailto:jon@latchkey.com">Jon S. Stevens</a>
  - * @version $Revision: 1.3 $ $Date: 2000/08/18 19:42:19 $
  + * @version $Revision: 1.4 $ $Date: 2000/10/07 19:13:50 $
    */
   
   final class StandardSession
  @@ -541,6 +541,24 @@
   
   
       /**
  +     * Read a serialized version of the contents of this session object from
  +     * the specified object input stream, without requiring that the
  +     * StandardSession itself have been serialized.
  +     *
  +     * @param stream The object input stream to read from
  +     *
  +     * @exception ClassNotFoundException if an unknown class is specified
  +     * @exception IOException if an input/output error occurs
  +     */
  +    void readObjectData(ObjectInputStream stream)
  +        throws ClassNotFoundException, IOException {
  +
  +        readObject(stream);
  +
  +    }
  +
  +
  +    /**
        * Set the <code>isNew</code> flag for this session.
        *
        * @param isNew The new value for the <code>isNew</code> flag
  @@ -560,6 +578,23 @@
       void setValid(boolean isValid) {
   
   	this.isValid = isValid;
  +    }
  +
  +
  +    /**
  +     * Write a serialized version of the contents of this session object to
  +     * the specified object output stream, without requiring that the
  +     * StandardSession itself have been serialized.
  +     *
  +     * @param stream The object output stream to write to
  +     *
  +     * @exception IOException if an input/output error occurs
  +     */
  +    void writeObjectData(ObjectOutputStream stream)
  +        throws IOException {
  +
  +        writeObject(stream);
  +
       }