You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by jf...@apache.org on 2003/02/11 12:54:12 UTC
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session FileStore.java JDBCStore.java ManagerBase.java PersistentManagerBase.java StandardSession.java
jfclere 2003/02/11 03:54:12
Modified: catalina/src/share/org/apache/catalina Manager.java
catalina/src/share/org/apache/catalina/session
FileStore.java JDBCStore.java ManagerBase.java
PersistentManagerBase.java StandardSession.java
Log:
Correct problems related to the persistence of sessions:
Revision Changes Path
1.9 +10 -4 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/Manager.java
Index: Manager.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/Manager.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- Manager.java 9 Dec 2002 15:05:55 -0000 1.8
+++ Manager.java 11 Feb 2003 11:54:12 -0000 1.9
@@ -175,6 +175,12 @@
*/
public void add(Session session);
+ /**
+ * Get a session from the recycled ones or create a new empty one.
+ * The PersistentManager manager does not need to create session data
+ * because it reads it from the Store.
+ */
+ public Session createEmptySession();
/**
* Add a property change listener to this component.
1.11 +6 -5 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/FileStore.java
Index: FileStore.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/FileStore.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- FileStore.java 9 Dec 2002 15:05:55 -0000 1.10
+++ FileStore.java 11 Feb 2003 11:54:12 -0000 1.11
@@ -333,7 +333,7 @@
try {
StandardSession session =
- (StandardSession) manager.createSession();
+ (StandardSession) manager.createEmptySession();
session.readObjectData(ois);
session.setManager(manager);
return (session);
@@ -385,6 +385,7 @@
public void save(Session session) throws IOException {
// Open an output stream to the specified pathname, if any
+ System.out.println("save: " + session.getId());
File file = file(session.getId());
if (file == null) {
return;
1.9 +5 -5 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/JDBCStore.java
Index: JDBCStore.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/JDBCStore.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- JDBCStore.java 9 Dec 2002 15:05:55 -0000 1.8
+++ JDBCStore.java 11 Feb 2003 11:54:12 -0000 1.9
@@ -538,7 +538,7 @@
if(ois != null) {
try {
- _session = (StandardSession) manager.createSession();
+ _session = (StandardSession) manager.createEmptySession();
_session.readObjectData(ois);
_session.setManager(manager);
} finally {
1.19 +27 -16 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/ManagerBase.java
Index: ManagerBase.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/ManagerBase.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- ManagerBase.java 6 Feb 2003 23:01:41 -0000 1.18
+++ ManagerBase.java 11 Feb 2003 11:54:12 -0000 1.19
@@ -574,18 +574,7 @@
public Session createSession() {
// Recycle or create a Session instance
- Session session = null;
- synchronized (recycled) {
- int size = recycled.size();
- if (size > 0) {
- session = (Session) recycled.get(size - 1);
- recycled.remove(size - 1);
- }
- }
- if (session != null)
- session.setManager(this);
- else
- session = new StandardSession(this);
+ Session session = createEmptySession();
// Initialize the properties of the new session and return it
session.setNew(true);
@@ -615,6 +604,28 @@
return (session);
+ }
+
+
+ /**
+ * Get a session from the recycled ones or create a new empty one.
+ * The PersistentManager manager does not need to create session data
+ * because it reads it from the Store.
+ */
+ public Session createEmptySession() {
+ Session session = null;
+ synchronized (recycled) {
+ int size = recycled.size();
+ if (size > 0) {
+ session = (Session) recycled.get(size - 1);
+ recycled.remove(size - 1);
+ }
+ }
+ if (session != null)
+ session.setManager(this);
+ else
+ session = new StandardSession(this);
+ return(session);
}
1.13 +6 -5 jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/PersistentManagerBase.java
Index: PersistentManagerBase.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session/PersistentManagerBase.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- PersistentManagerBase.java 9 Dec 2002 15:05:55 -0000 1.12
+++ PersistentManagerBase.java 11 Feb 2003 11:54:12 -0000 1.13
@@ -733,7 +733,8 @@
log(sm.getString("persistentManager.swapIn", id));
session.setManager(this);
- session.setId(id); // To make sure the listener knows about it.
+ // To make sure the listener knows about it.
+ ((StandardSession)session).tellNew();
add(session);
((StandardSession)session).activate();
1.35 +11 -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.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- StandardSession.java 10 Feb 2003 09:59:31 -0000 1.34
+++ StandardSession.java 11 Feb 2003 11:54:12 -0000 1.35
@@ -373,6 +373,13 @@
if (manager != null)
manager.add(this);
+ tellNew();
+ }
+ /**
+ * Inform the listener about the new session.
+ *
+ */
+ public void tellNew() {
// Notify interested session event listeners
fireSessionEvent(Session.SESSION_CREATED_EVENT, null);
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org