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