Author: rjung Date: Wed Nov 26 18:16:59 2014 New Revision: 1641876 URL: http://svn.apache.org/r1641876 Log: Note: technically, the actual patch differs from proposal (r1346675): in Tomcat 7 the changes are in ManagerBase, in Tomcat 6 the same code belongs to specific manager implementations.
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=53230 Change ManagerBase to throw TooManyActiveSessionsException instead of IllegalStateException to allow for custom error page. Backport of r1353128 from TC 6. Modified: tomcat/sandbox/tomcat-oacc/trunk/docs/changelog.xml tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/DeltaManager.java tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/SimpleTcpReplicationManager.java Modified: tomcat/sandbox/tomcat-oacc/trunk/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-oacc/trunk/docs/changelog.xml?rev=1641876&r1=1641875&r2=1641876&view=diff ============================================================================== --- tomcat/sandbox/tomcat-oacc/trunk/docs/changelog.xml (original) +++ tomcat/sandbox/tomcat-oacc/trunk/docs/changelog.xml Wed Nov 26 18:16:59 2014 @@ -31,6 +31,12 @@ <body> <section name="Tomcat OACC 0.1 (rjung)"> <subsection name="Cluster"> + <update> + <bug>53230</bug>: Change session managers to throw + TooManyActiveSessionsException instead of IllegalStateException + when the maximum number of sessions has been exceeded and a new + session will not be created. (schultz/kkolinko) + </update> <fix> Replicate principal in ClusterSingleSignOn. (kfujino) </fix> Modified: tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/DeltaManager.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/DeltaManager.java?rev=1641876&r1=1641875&r2=1641876&view=diff ============================================================================== --- tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/DeltaManager.java (original) +++ tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/DeltaManager.java Wed Nov 26 18:16:59 2014 @@ -45,6 +45,7 @@ import org.apache.catalina.cluster.Clust import org.apache.catalina.cluster.Member; import org.apache.catalina.cluster.tcp.ReplicationValve; import org.apache.catalina.session.ManagerBase; +import org.apache.catalina.session.TooManyActiveSessionsException; import org.apache.catalina.util.CustomObjectInputStream; import org.apache.catalina.util.LifecycleSupport; import org.apache.catalina.util.StringManager; @@ -632,7 +633,9 @@ public class DeltaManager extends Cluste public Session createSession(String sessionId, boolean distribute) { if ((maxActiveSessions >= 0) && (sessions.size() >= maxActiveSessions)) { rejectedSessions++; - throw new IllegalStateException(sm.getString("deltaManager.createSession.ise")); + throw new TooManyActiveSessionsException( + sm.getString("deltaManager.createSession.ise"), + maxActiveSessions); } DeltaSession session = (DeltaSession) super.createSession(sessionId) ; session.setExpireTolerance(this.expireTolerance); Modified: tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/SimpleTcpReplicationManager.java URL: http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/SimpleTcpReplicationManager.java?rev=1641876&r1=1641875&r2=1641876&view=diff ============================================================================== --- tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/SimpleTcpReplicationManager.java (original) +++ tomcat/sandbox/tomcat-oacc/trunk/src/share/org/apache/catalina/cluster/session/SimpleTcpReplicationManager.java Wed Nov 26 18:16:59 2014 @@ -28,6 +28,7 @@ import org.apache.catalina.cluster.Clust import org.apache.catalina.cluster.Member; import org.apache.catalina.realm.GenericPrincipal; import org.apache.catalina.session.StandardManager; +import org.apache.catalina.session.TooManyActiveSessionsException; /** * Title: Tomcat Session Replication for Tomcat 4.0 <BR> @@ -204,9 +205,11 @@ implements ClusterManager //inherited from the basic manager if ((getMaxActiveSessions() >= 0) && - (sessions.size() >= getMaxActiveSessions())) - throw new IllegalStateException(sm.getString("standardManager.createSession.ise")); - + (sessions.size() >= getMaxActiveSessions())) { + throw new TooManyActiveSessionsException( + sm.getString("standardManager.createSession.ise"), + getMaxActiveSessions()); + } Session session = new ReplicatedSession(this); --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org