2012/11/27 <ma...@apache.org>: > Author: markt > Date: Tue Nov 27 10:35:30 2012 > New Revision: 1414110 > > URL: http://svn.apache.org/viewvc?rev=1414110&view=rev > Log: > More Javadoc > > Modified: > tomcat/trunk/java/org/apache/tomcat/websocket/ServerContainerImpl.java > tomcat/trunk/java/org/apache/tomcat/websocket/Util.java > > Modified: > tomcat/trunk/java/org/apache/tomcat/websocket/ServerContainerImpl.java > URL: > http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/ServerContainerImpl.java?rev=1414110&r1=1414109&r2=1414110&view=diff > ============================================================================== > --- tomcat/trunk/java/org/apache/tomcat/websocket/ServerContainerImpl.java > (original) > +++ tomcat/trunk/java/org/apache/tomcat/websocket/ServerContainerImpl.java > Tue Nov 27 10:35:30 2012 > @@ -27,16 +27,26 @@ import javax.websocket.Endpoint; > import javax.websocket.ServerContainer; > import javax.websocket.ServerEndpointConfiguration; > > +/** > + * Provides a per class loader (i.e. per web application) instance of a > + * {@link ServerContainer}. > + */ > public class ServerContainerImpl extends ClientContainerImpl implements > ServerContainer { > > - // Needs to be a WekaHashMap to prevent memory leaks when a context is > + // Needs to be a WeakHashMap to prevent memory leaks when a context is > // stopped > private static Map<ClassLoader, ServerContainerImpl> > classLoaderContainerMap = new WeakHashMap<>(); > private static ReadWriteLock classLoaderContainerMapLock = > new ReentrantReadWriteLock();
A ReadWriteLock cannot be used to guard a WeakHashMap. The WeakHashMap may modify itself on get(), as it processes the reference queue of items removed by GC. Either a plain old lock / synchronization is needed, or some other solution (e.g. org.apache.tomcat.util.collections.ManagedConcurrentWeakHashMap ) Best regards, Konstantin Kolinko --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org