[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