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

Reply via email to