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);
+
}