Repository: cxf Updated Branches: refs/heads/2.6.x-fixes 87e75e9eb -> 1daf48050
Replacing a strong map of jaxrs context proxies with a weak hash map Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/1daf4805 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/1daf4805 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/1daf4805 Branch: refs/heads/2.6.x-fixes Commit: 1daf48050f1be39840374a55c1b36bfa98fe7c96 Parents: 87e75e9 Author: Sergey Beryozkin <[email protected]> Authored: Fri Jul 4 11:30:29 2014 +0100 Committer: Sergey Beryozkin <[email protected]> Committed: Fri Jul 4 14:57:22 2014 +0100 ---------------------------------------------------------------------- .../cxf/jaxrs/model/AbstractResourceInfo.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/1daf4805/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/AbstractResourceInfo.java ---------------------------------------------------------------------- diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/AbstractResourceInfo.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/AbstractResourceInfo.java index 15f41a7..2cb8890 100644 --- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/AbstractResourceInfo.java +++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/model/AbstractResourceInfo.java @@ -27,7 +27,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; +import java.util.WeakHashMap; import javax.annotation.Resource; import javax.ws.rs.core.Application; @@ -102,12 +102,15 @@ public abstract class AbstractResourceInfo { @SuppressWarnings("unchecked") private <T> Map<Class<?>, Map<T, ThreadLocalProxy<?>>> getProxyMap(Class<T> keyCls, String prop) { - Object property = bus.getProperty(prop); - if (property == null) { - Map<Class<?>, Map<T, ThreadLocalProxy<?>>> map - = new ConcurrentHashMap<Class<?>, Map<T, ThreadLocalProxy<?>>>(2); - bus.setProperty(prop, map); - property = map; + Object property = null; + synchronized (bus) { + property = bus.getProperty(prop); + if (property == null) { + Map<Class<?>, Map<T, ThreadLocalProxy<?>>> map + = Collections.synchronizedMap(new WeakHashMap<Class<?>, Map<T, ThreadLocalProxy<?>>>(2)); + bus.setProperty(prop, map); + property = map; + } } return (Map<Class<?>, Map<T, ThreadLocalProxy<?>>>)property; }
