import com.hazelcast.spi.ManagedService; import com.hazelcast.spi.NodeEngine; import com.hazelcast.spi.RemoteService; import java.util.HashMap; import java.util.Map; import java.util.Properties; public class CounterService implements ManagedService, RemoteService { static final String NAME = "CounterService"; Container[] containers; private NodeEngine nodeEngine; @Override public void init(NodeEngine nodeEngine, Properties properties) { this.nodeEngine = nodeEngine; containers = new Container[nodeEngine.getPartitionService().getPartitionCount()]; for (int i = 0; i < containers.length; i++) { containers[i] = new Container(); } } @Override public void shutdown(boolean terminate) { } @Override public CounterProxy createDistributedObject(String objectName) { int partitionId = nodeEngine.getPartitionService().getPartitionId(objectName); Container container = containers[partitionId]; container.init(objectName); return new CounterProxy(objectName, nodeEngine, this); } @Override public void destroyDistributedObject(String objectName) { int partitionId = nodeEngine.getPartitionService().getPartitionId(objectName); Container container = containers[partitionId]; container.destroy(objectName); } @Override public void reset() { } public static class Container { final Map<String, Integer> values = new HashMap<String, Integer>(); private void init(String objectName) { values.put(objectName, 0); } private void destroy(String objectName) { values.remove(objectName); } } }