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 ChangesPath 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 - 1.8 +++ Manager.java 11 Feb 2003 11:54:12 - 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.java9 Dec 2002 15:05:55 - 1.10 +++ FileStore.java11 Feb 2003 11:54:12 - 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.java9 Dec 2002 15:05:55 - 1.8 +++ JDBCStore.java11 Feb 2003 11:54:12 - 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 - 1.18 +++ ManagerBase.java 11 Feb 2003 11:54:12 - 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 =
cvs commit: jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/session FileStore.java JDBCStore.java ManagerBase.java PersistentManagerBase.java
jfclere 2002/11/30 04:43:14 Modified:catalina/src/share/org/apache/catalina Manager.java catalina/src/share/org/apache/catalina/session FileStore.java JDBCStore.java ManagerBase.java PersistentManagerBase.java Log: Add createEmptySession to Manager to improve the PersistentManager logics. Revision ChangesPath 1.7 +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.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- Manager.java 19 Sep 2002 22:55:47 - 1.6 +++ Manager.java 30 Nov 2002 12:43:14 - 1.7 @@ -183,6 +183,12 @@ */ public void addPropertyChangeListener(PropertyChangeListener listener); +/** + * 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(); /** * Construct and return a new session object, based on the default 1.9 +5 -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.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- FileStore.java19 Nov 2002 16:21:16 - 1.8 +++ FileStore.java30 Nov 2002 12:43:14 - 1.9 @@ -333,7 +333,7 @@ try { StandardSession session = -(StandardSession) manager.createSession(); +(StandardSession) manager.createEmptySession(); session.readObjectData(ois); session.setManager(manager); return (session); 1.7 +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.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- JDBCStore.java20 Sep 2002 14:05:14 - 1.6 +++ JDBCStore.java30 Nov 2002 12:43:14 - 1.7 @@ -538,7 +538,7 @@ if(ois != null) { try { -_session = (StandardSession) manager.createSession(); +_session = (StandardSession) manager.createEmptySession(); _session.readObjectData(ois); _session.setManager(manager); } finally { 1.13 +27 -17 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.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- ManagerBase.java 19 Sep 2002 22:55:48 - 1.12 +++ ManagerBase.java 30 Nov 2002 12:43:14 - 1.13 @@ -560,18 +560,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); @@ -583,7 +572,6 @@ // @todo Move appending of jvmRoute generateSessionId()??? if (jvmRoute != null) { sessionId += '.' + jvmRoute; -session.setId(sessionId); } /* synchronized (sessions) { @@ -595,6 +583,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