Author: markt
Date: Thu Oct 16 19:01:35 2014
New Revision: 1632411
URL: http://svn.apache.org/r1632411
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=57089
Ensure that configuration of a session ID generator is not lost when a web
application is reloaded.
Modified:
tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java
tomcat/trunk/java/org/apache/catalina/util/SessionIdGeneratorBase.java
tomcat/trunk/webapps/docs/changelog.xml
Modified: tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java?rev=1632411&r1=1632410&r2=1632411&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java (original)
+++ tomcat/trunk/java/org/apache/catalina/session/ManagerBase.java Thu Oct 16
19:01:35 2014
@@ -36,6 +36,7 @@ import java.util.concurrent.atomic.Atomi
import org.apache.catalina.Container;
import org.apache.catalina.Context;
import org.apache.catalina.Engine;
+import org.apache.catalina.Lifecycle;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.Manager;
import org.apache.catalina.Session;
@@ -615,17 +616,23 @@ public abstract class ManagerBase extend
sig.setSecureRandomProvider(getSecureRandomProvider());
}
- // Force initialization of the random number generator
- if (log.isDebugEnabled())
- log.debug("Force random number initialization starting");
- sessionIdGenerator.generateSessionId();
- if (log.isDebugEnabled())
- log.debug("Force random number initialization completed");
+ if (sessionIdGenerator instanceof Lifecycle) {
+ ((Lifecycle) sessionIdGenerator).start();
+ } else {
+ // Force initialization of the random number generator
+ if (log.isDebugEnabled())
+ log.debug("Force random number initialization starting");
+ sessionIdGenerator.generateSessionId();
+ if (log.isDebugEnabled())
+ log.debug("Force random number initialization completed");
+ }
}
@Override
protected void stopInternal() throws LifecycleException {
- this.sessionIdGenerator = null;
+ if (sessionIdGenerator instanceof Lifecycle) {
+ ((Lifecycle) sessionIdGenerator).stop();
+ }
}
Modified: tomcat/trunk/java/org/apache/catalina/util/SessionIdGeneratorBase.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/util/SessionIdGeneratorBase.java?rev=1632411&r1=1632410&r2=1632411&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/util/SessionIdGeneratorBase.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/util/SessionIdGeneratorBase.java Thu
Oct 16 19:01:35 2014
@@ -22,12 +22,15 @@ import java.security.SecureRandom;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
+import org.apache.catalina.LifecycleException;
+import org.apache.catalina.LifecycleState;
import org.apache.catalina.SessionIdGenerator;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.util.res.StringManager;
-public abstract class SessionIdGeneratorBase implements SessionIdGenerator {
+public abstract class SessionIdGeneratorBase extends LifecycleBase
+ implements SessionIdGenerator {
private static final Log log =
LogFactory.getLog(SessionIdGeneratorBase.class);
@@ -239,4 +242,32 @@ public abstract class SessionIdGenerator
result.getAlgorithm(), Long.valueOf(t2-t1)));
return result;
}
+
+
+ @Override
+ protected void initInternal() throws LifecycleException {
+ // NO-OP
+ }
+
+
+ @Override
+ protected void startInternal() throws LifecycleException {
+ // Ensure SecureRandom has been initialised
+ generateSessionId();
+
+ setState(LifecycleState.STARTING);
+ }
+
+
+ @Override
+ protected void stopInternal() throws LifecycleException {
+ setState(LifecycleState.STOPPING);
+ randoms.clear();
+ }
+
+
+ @Override
+ protected void destroyInternal() throws LifecycleException {
+ // NO-OP
+ }
}
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1632411&r1=1632410&r2=1632411&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Thu Oct 16 19:01:35 2014
@@ -150,6 +150,10 @@
resource. The context.xml having an external docBase has already been
registered as a redeploy resource at first. (kfujino)
</fix>
+ <fix>
+ <bug>57089</bug>: Ensure that configuration of a session ID generator
is
+ not lost when a web application is reloaded. (markt)
+ </fix>
</changelog>
</subsection>
<subsection name="Coyote">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]