src/java.management.rest/share/classes/com/oracle/jmx/remote/rest/http/MBeanServerResource.java
branchjmx-rest-api
changeset 56002 60ab3b595a8e
parent 56001 95c0323f0c1a
child 56006 352a4f213fc6
--- a/src/java.management.rest/share/classes/com/oracle/jmx/remote/rest/http/MBeanServerResource.java	Thu Dec 28 20:34:32 2017 +0530
+++ b/src/java.management.rest/share/classes/com/oracle/jmx/remote/rest/http/MBeanServerResource.java	Mon Jan 01 23:59:14 2018 +0530
@@ -58,6 +58,7 @@
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
 
 
 public final class MBeanServerResource implements RestResource, JmxRestAdapter {
@@ -78,12 +79,12 @@
     // Use an expiring map that removes entries after the configured period lapses.
     private final TimedMap<String, MBeanCollectionResource> proxyMBeanServers = new TimedMap<>(5*60);
 
-    private static int count = 0;
+    private static AtomicInteger resourceNumber = new AtomicInteger(1);
     private boolean started = false;
 
     public MBeanServerResource(HttpServer hServer, MBeanServer mbeanServer,
                                String context, Map<String, ?> env) {
-        httpServer = hServer;
+        this.httpServer = hServer;
         this.env = env;
         this.mbeanServer = mbeanServer;
 
@@ -91,7 +92,7 @@
                 MBeanServerDelegate.DELEGATE_NAME, MBeanServerDelegateMBean.class);
 
         if (context == null || context.isEmpty()) {
-            contextStr = "server-" + count++;
+            contextStr = "server-" + resourceNumber.getAndIncrement();
         } else {
             contextStr = context;
         }
@@ -306,6 +307,7 @@
 
         public TimedMap(int seconds) {
             this.timeout = seconds;
+            permanentMap = new ConcurrentHashMap<>();
         }
 
         public boolean containsKey(K key) {