diff --git a/hazelcast/pom.xml b/hazelcast/pom.xml
new file mode 100644
index 0000000000..62cfa89c0f
--- /dev/null
+++ b/hazelcast/pom.xml
@@ -0,0 +1,72 @@
+
+ 4.0.0
+ com.baeldung
+ hazelcast
+ 0.0.1-SNAPSHOT
+ hazelcast
+
+
+
+
+ com.hazelcast
+ hazelcast-all
+ ${hazelcast.version}
+
+
+
+
+ org.slf4j
+ slf4j-api
+ ${org.slf4j.version}
+
+
+
+ ch.qos.logback
+ logback-classic
+ ${logback.version}
+
+
+
+ ch.qos.logback
+ logback-core
+ ${logback.version}
+
+
+
+
+
+ hazelcast
+
+
+ src/main/resources
+ true
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven-compiler-plugin.version}
+
+ 1.8
+ 1.8
+
+
+
+
+
+
+
+ 3.7
+
+
+ 1.7.21
+ 1.1.7
+
+
+ 3.5.1
+
+
+
\ No newline at end of file
diff --git a/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/NativeClient.java b/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/NativeClient.java
new file mode 100644
index 0000000000..bda4b94733
--- /dev/null
+++ b/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/NativeClient.java
@@ -0,0 +1,26 @@
+package com.baeldung.hazelcast.cluster;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.baeldung.hazelcast.listener.CountryEntryListener;
+import com.hazelcast.client.HazelcastClient;
+import com.hazelcast.client.config.ClientConfig;
+import com.hazelcast.config.GroupConfig;
+import com.hazelcast.core.HazelcastInstance;
+import com.hazelcast.core.IMap;
+
+public class NativeClient {
+ private static final Logger logger = LoggerFactory.getLogger(NativeClient.class);
+
+ public static void main(String[] args) throws InterruptedException {
+ ClientConfig config = new ClientConfig();
+ GroupConfig groupConfig = config.getGroupConfig();
+ groupConfig.setName("dev");
+ groupConfig.setPassword("dev-pass");
+ HazelcastInstance hazelcastInstanceClient = HazelcastClient.newHazelcastClient(config);
+ IMap countryMap = hazelcastInstanceClient.getMap("country");
+ countryMap.addEntryListener(new CountryEntryListener(), true);
+ logger.info("Country map size: " + countryMap.size());
+ }
+}
diff --git a/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/ServerNode.java b/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/ServerNode.java
new file mode 100644
index 0000000000..8680180399
--- /dev/null
+++ b/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/ServerNode.java
@@ -0,0 +1,23 @@
+package com.baeldung.hazelcast.cluster;
+
+import java.util.Map;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.hazelcast.core.Hazelcast;
+import com.hazelcast.core.HazelcastInstance;
+import com.hazelcast.core.IdGenerator;
+
+public class ServerNode {
+ private static final Logger logger = LoggerFactory.getLogger(ServerNode.class);
+
+ public static void main(String[] args) {
+ HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance();
+ Map countryMap = hazelcastInstance.getMap("country");
+ IdGenerator idGenerator = hazelcastInstance.getIdGenerator("newid");
+ Long countryIdGenerator = idGenerator.newId() == 0L ? 1L : idGenerator.newId();
+ countryMap.put(countryIdGenerator, "Country1");
+ logger.info("Country map size: " + countryMap.size());
+ }
+}
diff --git a/hazelcast/src/main/java/com/baeldung/hazelcast/listener/CountryEntryListener.java b/hazelcast/src/main/java/com/baeldung/hazelcast/listener/CountryEntryListener.java
new file mode 100644
index 0000000000..1f95dcd9f3
--- /dev/null
+++ b/hazelcast/src/main/java/com/baeldung/hazelcast/listener/CountryEntryListener.java
@@ -0,0 +1,41 @@
+package com.baeldung.hazelcast.listener;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.hazelcast.core.EntryEvent;
+import com.hazelcast.core.MapEvent;
+import com.hazelcast.map.listener.EntryAddedListener;
+import com.hazelcast.map.listener.EntryEvictedListener;
+import com.hazelcast.map.listener.EntryRemovedListener;
+import com.hazelcast.map.listener.EntryUpdatedListener;
+import com.hazelcast.map.listener.MapClearedListener;
+import com.hazelcast.map.listener.MapEvictedListener;
+
+public class CountryEntryListener implements EntryAddedListener, EntryRemovedListener, EntryUpdatedListener, EntryEvictedListener, MapEvictedListener, MapClearedListener {
+ private static final Logger logger = LoggerFactory.getLogger(CountryEntryListener.class);
+
+ public void entryAdded(EntryEvent event) {
+ logger.info("entryAdded:" + event);
+ }
+
+ public void entryUpdated(EntryEvent event) {
+ logger.info("entryUpdated:" + event);
+ }
+
+ public void entryRemoved(EntryEvent event) {
+ logger.info("entryRemoved:" + event);
+ }
+
+ public void entryEvicted(EntryEvent event) {
+ logger.info("entryEvicted:" + event);
+ }
+
+ public void mapCleared(MapEvent event) {
+ logger.info("mapCleared:" + event);
+ }
+
+ public void mapEvicted(MapEvent event) {
+ logger.info("mapEvicted:" + event);
+ }
+}
diff --git a/hazelcast/src/main/resources/hazelcast.xml b/hazelcast/src/main/resources/hazelcast.xml
new file mode 100644
index 0000000000..f29dc532b8
--- /dev/null
+++ b/hazelcast/src/main/resources/hazelcast.xml
@@ -0,0 +1,16 @@
+
+
+
+ 5701
+
+
+
+
+ machine1
+ localhost
+
+
+
+
\ No newline at end of file
diff --git a/hazelcast/src/main/resources/logback.xml b/hazelcast/src/main/resources/logback.xml
new file mode 100644
index 0000000000..8b566286b8
--- /dev/null
+++ b/hazelcast/src/main/resources/logback.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+ %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg %n
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file