Would it be worth making this configurable? For example:

boolean ignoreFailedStarts = false;
 ...
} catch (LifecycleException e) {
    if (ignoreFailedStarts) {
        // If realm doesn't start can't authenticate against it
        iter.remove();
        log.error(sm.getString("combinedRealm.realmStartFail",
                  realm.getInfo()), e);
    } else {
        throw e;
    }
}


On 12/16/2009 6:05 AM, ma...@apache.org wrote:
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();


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to