[jboss-cvs] JBossAS SVN: r57910 - in branches/JBoss_3_2_4_JBAS-3796/jakarta-tomcat-5.0.26-src-JBAS-3796: jakarta-tomcat-5/deployer/lib jakarta-tomcat-catalina jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sun Oct 29 12:21:02 EST 2006


Author: scott.stark at jboss.org
Date: 2006-10-29 12:20:52 -0500 (Sun, 29 Oct 2006)
New Revision: 57910

Modified:
   branches/JBoss_3_2_4_JBAS-3796/jakarta-tomcat-5.0.26-src-JBAS-3796/jakarta-tomcat-5/deployer/lib/catalina-ant.jar
   branches/JBoss_3_2_4_JBAS-3796/jakarta-tomcat-5.0.26-src-JBAS-3796/jakarta-tomcat-5/deployer/lib/catalina-deployer.jar
   branches/JBoss_3_2_4_JBAS-3796/jakarta-tomcat-5.0.26-src-JBAS-3796/jakarta-tomcat-5/deployer/lib/jasper-compiler.jar
   branches/JBoss_3_2_4_JBAS-3796/jakarta-tomcat-5.0.26-src-JBAS-3796/jakarta-tomcat-5/deployer/lib/jasper-runtime.jar
   branches/JBoss_3_2_4_JBAS-3796/jakarta-tomcat-5.0.26-src-JBAS-3796/jakarta-tomcat-5/deployer/lib/jsp-api.jar
   branches/JBoss_3_2_4_JBAS-3796/jakarta-tomcat-5.0.26-src-JBAS-3796/jakarta-tomcat-5/deployer/lib/servlet-api.jar
   branches/JBoss_3_2_4_JBAS-3796/jakarta-tomcat-5.0.26-src-JBAS-3796/jakarta-tomcat-catalina/.classpath
   branches/JBoss_3_2_4_JBAS-3796/jakarta-tomcat-5.0.26-src-JBAS-3796/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/StandardManager.java
Log:
JBAS-3796, cleanup the variable reuse that was leading to a CME.

Modified: branches/JBoss_3_2_4_JBAS-3796/jakarta-tomcat-5.0.26-src-JBAS-3796/jakarta-tomcat-5/deployer/lib/catalina-ant.jar
===================================================================
(Binary files differ)

Modified: branches/JBoss_3_2_4_JBAS-3796/jakarta-tomcat-5.0.26-src-JBAS-3796/jakarta-tomcat-5/deployer/lib/catalina-deployer.jar
===================================================================
(Binary files differ)

Modified: branches/JBoss_3_2_4_JBAS-3796/jakarta-tomcat-5.0.26-src-JBAS-3796/jakarta-tomcat-5/deployer/lib/jasper-compiler.jar
===================================================================
(Binary files differ)

Modified: branches/JBoss_3_2_4_JBAS-3796/jakarta-tomcat-5.0.26-src-JBAS-3796/jakarta-tomcat-5/deployer/lib/jasper-runtime.jar
===================================================================
(Binary files differ)

Modified: branches/JBoss_3_2_4_JBAS-3796/jakarta-tomcat-5.0.26-src-JBAS-3796/jakarta-tomcat-5/deployer/lib/jsp-api.jar
===================================================================
(Binary files differ)

Modified: branches/JBoss_3_2_4_JBAS-3796/jakarta-tomcat-5.0.26-src-JBAS-3796/jakarta-tomcat-5/deployer/lib/servlet-api.jar
===================================================================
(Binary files differ)

Modified: branches/JBoss_3_2_4_JBAS-3796/jakarta-tomcat-5.0.26-src-JBAS-3796/jakarta-tomcat-catalina/.classpath
===================================================================
--- branches/JBoss_3_2_4_JBAS-3796/jakarta-tomcat-5.0.26-src-JBAS-3796/jakarta-tomcat-catalina/.classpath	2006-10-29 15:35:28 UTC (rev 57909)
+++ branches/JBoss_3_2_4_JBAS-3796/jakarta-tomcat-5.0.26-src-JBAS-3796/jakarta-tomcat-catalina/.classpath	2006-10-29 17:20:52 UTC (rev 57910)
@@ -10,5 +10,6 @@
 	<classpathentry kind="src" path="webapps/docs/appdev/sample/src"/>
 	<classpathentry kind="src" path="webapps/manager/WEB-INF/classes"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="lib" path="/jakarta-tomcat-5/repository/commons-logging-1.0.3/commons-logging.jar"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>

Modified: branches/JBoss_3_2_4_JBAS-3796/jakarta-tomcat-5.0.26-src-JBAS-3796/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/StandardManager.java
===================================================================
--- branches/JBoss_3_2_4_JBAS-3796/jakarta-tomcat-5.0.26-src-JBAS-3796/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/StandardManager.java	2006-10-29 15:35:28 UTC (rev 57909)
+++ branches/JBoss_3_2_4_JBAS-3796/jakarta-tomcat-5.0.26-src-JBAS-3796/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/StandardManager.java	2006-10-29 17:20:52 UTC (rev 57910)
@@ -32,6 +32,7 @@
 import java.security.PrivilegedActionException;
 import java.security.PrivilegedExceptionAction;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.Iterator;
 import javax.servlet.ServletContext;
 import org.apache.catalina.Container;
@@ -134,6 +135,7 @@
      * Has this component been started yet?
      */
     protected boolean started = false;
+    private boolean inStop;
 
 
     /**
@@ -494,113 +496,139 @@
      *
      * @exception IOException if an input/output error occurs
      */
-    protected void doUnload() throws IOException {
+    protected void doUnload() throws IOException
+   {
 
-        if (log.isDebugEnabled())
-            log.debug("Unloading persisted sessions");
+      if (log.isDebugEnabled())
+         log.debug("Unloading persisted sessions");
 
-        // Open an output stream to the specified pathname, if any
-        File file = file();
-        if (file == null)
-            return;
-        if (log.isDebugEnabled())
-            log.debug(sm.getString("standardManager.unloading", pathname));
-        FileOutputStream fos = null;
-        ObjectOutputStream oos = null;
-        try {
-            fos = new FileOutputStream(file.getAbsolutePath());
-            oos = new ObjectOutputStream(new BufferedOutputStream(fos));
-        } catch (IOException e) {
-            log.error(sm.getString("standardManager.unloading.ioe", e), e);
-            if (oos != null) {
-                try {
-                    oos.close();
-                } catch (IOException f) {
-                    ;
-                }
-                oos = null;
+      // Open an output stream to the specified pathname, if any
+      File file = file();
+      if (file == null)
+         return;
+      if (log.isDebugEnabled())
+         log.debug(sm.getString("standardManager.unloading", pathname));
+      FileOutputStream fos = null;
+      ObjectOutputStream oos = null;
+      try
+      {
+         fos = new FileOutputStream(file.getAbsolutePath());
+         oos = new ObjectOutputStream(new BufferedOutputStream(fos));
+      }
+      catch (IOException e)
+      {
+         log.error(sm.getString("standardManager.unloading.ioe", e), e);
+         if (oos != null)
+         {
+            try
+            {
+               oos.close();
             }
-            throw e;
-        }
+            catch (IOException f)
+            {
+               ;
+            }
+            oos = null;
+         }
+         throw e;
+      }
 
-        // Write the number of active sessions, followed by the details
-        ArrayList list = new ArrayList();
-        synchronized (sessions) {
-            if (log.isDebugEnabled())
-                log.debug("Unloading " + sessions.size() + " sessions");
-            try {
-                // First validate the sessions
-            	Iterator elements = sessions.values().iterator();
-            	while (elements.hasNext()) {
-            	   StandardSession session =
-            	       (StandardSession) elements.next();
-            	   if( session.isValid() == false ) { 
-            	      if (log.isDebugEnabled()) 
-            	         log.debug("Ignoring invalid session: "+session); 
-            	      continue;
-            	   }
-            	   list.add(session);
-            	}
-
-            	oos.writeObject(new Integer(list.size()));
-                elements = list.iterator();
-                while (elements.hasNext()) {
-                    StandardSession session =
-                        (StandardSession) elements.next();
-                    list.add(session);
-                    ((StandardSession) session).passivate();
-                    session.writeObjectData(oos);
-                }
-            } catch (IOException e) {
-                log.error(sm.getString("standardManager.unloading.ioe", e), e);
-                if (oos != null) {
-                    try {
-                        oos.close();
-                    } catch (IOException f) {
-                        ;
-                    }
-                    oos = null;
-                }
-                throw e;
+      // Write the number of active sessions, followed by the details
+      ArrayList validSessions = new ArrayList();
+      synchronized (sessions)
+      {
+         if (log.isDebugEnabled())
+            log.debug("Unloading " + sessions.size() + " sessions");
+         try
+         {
+            // First validate the sessions
+            Iterator elements = sessions.values().iterator();
+            while (elements.hasNext())
+            {
+               StandardSession session = (StandardSession) elements.next();
+               if (session.isValid() == false)
+               {
+                  if (log.isDebugEnabled())
+                     log.debug("Ignoring invalid session: " + session);
+                  continue;
+               }
+               validSessions.add(session);
             }
-        }
 
-        // Flush and close the output stream
-        try {
-            oos.flush();
-            oos.close();
-            oos = null;
-        } catch (IOException e) {
-            if (oos != null) {
-                try {
-                    oos.close();
-                } catch (IOException f) {
-                    ;
-                }
-                oos = null;
+            oos.writeObject(new Integer(validSessions.size()));
+            for (int n = 0; n < validSessions.size(); n++)
+            {
+               StandardSession session = (StandardSession) validSessions.get(n);
+               session.passivate();
+               session.writeObjectData(oos);
             }
+         }
+         catch (IOException e)
+         {
+            log.error(sm.getString("standardManager.unloading.ioe", e), e);
+            if (oos != null)
+            {
+               try
+               {
+                  oos.close();
+               }
+               catch (IOException f)
+               {
+                  ;
+               }
+               oos = null;
+            }
             throw e;
-        }
+         }
+      }
 
-        // Expire all the sessions we just wrote
-        if (log.isDebugEnabled())
-            log.debug("Expiring " + list.size() + " persisted sessions");
-        Iterator expires = list.iterator();
-        while (expires.hasNext()) {
-            StandardSession session = (StandardSession) expires.next();
-            try {
-                session.expire(false);
-            } catch (Throwable t) {
-                ;
+      // Flush and close the output stream
+      try
+      {
+         oos.flush();
+         oos.close();
+         oos = null;
+      }
+      catch (IOException e)
+      {
+         if (oos != null)
+         {
+            try
+            {
+               oos.close();
             }
-        }
+            catch (IOException f)
+            {
+               ;
+            }
+            oos = null;
+         }
+         throw e;
+      }
 
-        if (log.isDebugEnabled())
-            log.debug("Unloading complete");
+      // Expire all the sessions we just wrote
+      if (log.isDebugEnabled())
+         log.debug("Expiring " + validSessions.size() + " persisted sessions");
+      Iterator expires = validSessions.iterator();
+      while (expires.hasNext())
+      {
+         StandardSession session = (StandardSession) expires.next();
+         try
+         {
+            session.expire(false);
+         }
+         catch (Throwable t)
+         {
+            ;
+         }
+      }
 
-    }
+      if (log.isDebugEnabled())
+         log.debug("Unloading complete");
 
+   }
 
+
     // ------------------------------------------------------ Lifecycle Methods
 
 
@@ -686,12 +714,18 @@
     public void stop() throws LifecycleException {
 
         if (log.isDebugEnabled())
-            log.debug("Stopping");
+            log.debug("Stopping, inStop="+inStop);
 
         // Validate and update our current component state
-        if (!started)
+        if (!started )
+        {
+           // Only thrown an exception if we are not already stopping
+           if( !inStop )
             throw new LifecycleException
                 (sm.getString("standardManager.notStarted"));
+           return;
+        }
+        inStop = true;
         lifecycle.fireLifecycleEvent(STOP_EVENT, null);
         started = false;
 




More information about the jboss-cvs-commits mailing list