Author: markt Date: Wed Dec 16 11:05:09 2009 New Revision: 891187 URL: http://svn.apache.org/viewvc?rev=891187&view=rev Log: Fix bug 47841: CombinedRealm fails to switch to other realm https://issues.apache.org/bugzilla/show_bug.cgi?id=47841 Handle failure of sub-realm during combined realm start
Modified: tomcat/trunk/java/org/apache/catalina/realm/CombinedRealm.java tomcat/trunk/java/org/apache/catalina/realm/LocalStrings.properties Modified: tomcat/trunk/java/org/apache/catalina/realm/CombinedRealm.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/realm/CombinedRealm.java?rev=891187&r1=891186&r2=891187&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/realm/CombinedRealm.java (original) +++ tomcat/trunk/java/org/apache/catalina/realm/CombinedRealm.java Wed Dec 16 11:05:09 2009 @@ -20,6 +20,7 @@ import java.security.Principal; import java.security.cert.X509Certificate; +import java.util.Iterator; import java.util.LinkedList; import java.util.List; @@ -227,9 +228,19 @@ @Override public void start() throws LifecycleException { // Start 'sub-realms' then this one - for (Realm realm : realms) { + Iterator<Realm> iter = realms.iterator(); + + while (iter.hasNext()) { + Realm realm = iter.next(); if (realm instanceof Lifecycle) { - ((Lifecycle) realm).start(); + try { + ((Lifecycle) realm).start(); + } catch (LifecycleException e) { + // If realm doesn't start can't authenticate against it + iter.remove(); + log.error(sm.getString("combinedRealm.realmStartFail", + realm.getInfo()), e); + } } } super.start(); Modified: tomcat/trunk/java/org/apache/catalina/realm/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/realm/LocalStrings.properties?rev=891187&r1=891186&r2=891187&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/realm/LocalStrings.properties (original) +++ tomcat/trunk/java/org/apache/catalina/realm/LocalStrings.properties Wed Dec 16 11:05:09 2009 @@ -95,5 +95,6 @@ combinedRealm.authFailed=Failed to authenticate user "{0}" with realm "{1}" combinedRealm.authSucess=Authenticated user "{0}" with realm "{1}" combinedRealm.addRealm=Add "{0}" realm, making a total of "{1}" realms +combinedRealm.realmStartFail=Failed to start "{0}" realm lockOutRealm.authLockedUser=An attempt was made to authenticate the locked user "{0}" lockOutRealm.removeWarning=User "{0}" was removed from the failed users cache after {1} seconds to keep the cache size within the limit set --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org