You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2011/11/29 22:57:04 UTC

svn commit: r1208096 - in /tomcat/trunk/java/org/apache/catalina/core: ContainerBase.java StandardContext.java

Author: markt
Date: Tue Nov 29 21:57:04 2011
New Revision: 1208096

URL: http://svn.apache.org/viewvc?rev=1208096&view=rev
Log:
Retain thread safety for ContainerBase.realm but don't try and
start/stop it multiple times

Modified:
    tomcat/trunk/java/org/apache/catalina/core/ContainerBase.java
    tomcat/trunk/java/org/apache/catalina/core/StandardContext.java

Modified: tomcat/trunk/java/org/apache/catalina/core/ContainerBase.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ContainerBase.java?rev=1208096&r1=1208095&r2=1208096&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ContainerBase.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/ContainerBase.java Tue Nov 29 21:57:04 2011
@@ -710,14 +710,23 @@ public abstract class ContainerBase exte
                 return (realm);
             if (parent != null)
                 return (parent.getRealm());
-            return (null);
+            return null;
         } finally {
             l.unlock();
         }
-
     }
 
 
+    protected Realm getRealmInternal() {
+        Lock l = realmLock.readLock();
+        try {
+            l.lock();
+            return realm;
+        } finally {
+            l.unlock();
+        }
+    }
+
     /**
      * Set the Realm with which this Container is associated.
      *
@@ -1082,7 +1091,7 @@ public abstract class ContainerBase exte
             ((Lifecycle) manager).start();
         if ((cluster != null) && (cluster instanceof Lifecycle))
             ((Lifecycle) cluster).start();
-        Realm realm = getRealm();
+        Realm realm = getRealmInternal();
         if ((realm != null) && (realm instanceof Lifecycle))
             ((Lifecycle) realm).start();
         if ((resources != null) && (resources instanceof Lifecycle))
@@ -1169,7 +1178,7 @@ public abstract class ContainerBase exte
         if ((resources != null) && (resources instanceof Lifecycle)) {
             ((Lifecycle) resources).stop();
         }
-        Realm realm = getRealm();
+        Realm realm = getRealmInternal();
         if ((realm != null) && (realm instanceof Lifecycle)) {
             ((Lifecycle) realm).stop();
         }
@@ -1321,7 +1330,7 @@ public abstract class ContainerBase exte
                 log.warn(sm.getString("containerBase.backgroundProcess.manager", manager), e);
             }
         }
-        Realm realm = getRealm();
+        Realm realm = getRealmInternal();
         if (realm != null) {
             try {
                 realm.backgroundProcess();

Modified: tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardContext.java?rev=1208096&r1=1208095&r2=1208096&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardContext.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardContext.java Tue Nov 29 21:57:04 2011
@@ -5033,7 +5033,7 @@ public class StandardContext extends Con
 
                 if ((cluster != null) && (cluster instanceof Lifecycle))
                     ((Lifecycle) cluster).start();
-                Realm realm = getRealm();
+                Realm realm = getRealmInternal();
                 if ((realm != null) && (realm instanceof Lifecycle))
                     ((Lifecycle) realm).start();
                 if ((resources != null) && (resources instanceof Lifecycle))
@@ -5380,7 +5380,7 @@ public class StandardContext extends Con
             // Stop resources
             resourcesStop();
 
-            Realm realm = getRealm();
+            Realm realm = getRealmInternal();
             if ((realm != null) && (realm instanceof Lifecycle)) {
                 ((Lifecycle) realm).stop();
             }
@@ -5445,7 +5445,7 @@ public class StandardContext extends Con
         if ((manager != null) && (manager instanceof Lifecycle)) {
             ((Lifecycle) manager).destroy();
         }
-        Realm realm = getRealm();
+        Realm realm = getRealmInternal();
         if ((realm != null) && (realm instanceof Lifecycle)) {
             ((Lifecycle) realm).destroy();
         }



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