diff --git a/RestEasy Example/pom.xml b/RestEasy Example/pom.xml
new file mode 100644
index 0000000000..b16c5e8267
--- /dev/null
+++ b/RestEasy Example/pom.xml
@@ -0,0 +1,91 @@
+
+
+ 4.0.0
+
+ com.baeldung
+ resteasy-tutorial
+ 1.0
+ war
+
+
+
+ jboss
+ http://repository.jboss.org/nexus/content/groups/public/
+
+
+
+
+ 3.0.14.Final
+ runtime
+
+
+
+ RestEasyTutorial
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ 1.8
+
+
+
+
+
+
+
+
+ org.jboss.resteasy
+ jaxrs-api
+ 3.0.12.Final
+ ${resteasy.scope}
+
+
+
+ org.jboss.resteasy
+ resteasy-servlet-initializer
+ ${resteasy.version}
+ ${resteasy.scope}
+
+
+ jboss-jaxrs-api_2.0_spec
+ org.jboss.spec.javax.ws.rs
+
+
+
+
+
+ org.jboss.resteasy
+ resteasy-client
+ ${resteasy.version}
+ ${resteasy.scope}
+
+
+
+
+ javax.ws.rs
+ javax.ws.rs-api
+ 2.0.1
+
+
+
+ org.jboss.resteasy
+ resteasy-jackson-provider
+ ${resteasy.version}
+ ${resteasy.scope}
+
+
+
+ org.jboss.resteasy
+ resteasy-jaxb-provider
+ ${resteasy.version}
+ ${resteasy.scope}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/RestEasy Example/src/main/java/com/baeldung/Movie.java b/RestEasy Example/src/main/java/com/baeldung/Movie.java
new file mode 100644
index 0000000000..c0041d2e95
--- /dev/null
+++ b/RestEasy Example/src/main/java/com/baeldung/Movie.java
@@ -0,0 +1,535 @@
+
+package com.baeldung;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "movie", propOrder = {
+ "actors",
+ "awards",
+ "country",
+ "director",
+ "genre",
+ "imdbID",
+ "imdbRating",
+ "imdbVotes",
+ "language",
+ "metascore",
+ "plot",
+ "poster",
+ "rated",
+ "released",
+ "response",
+ "runtime",
+ "title",
+ "type",
+ "writer",
+ "year"
+})
+public class Movie {
+
+ protected String actors;
+ protected String awards;
+ protected String country;
+ protected String director;
+ protected String genre;
+ protected String imdbID;
+ protected String imdbRating;
+ protected String imdbVotes;
+ protected String language;
+ protected String metascore;
+ protected String plot;
+ protected String poster;
+ protected String rated;
+ protected String released;
+ protected String response;
+ protected String runtime;
+ protected String title;
+ protected String type;
+ protected String writer;
+ protected String year;
+
+ /**
+ * Recupera il valore della propriet� actors.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getActors() {
+ return actors;
+ }
+
+ /**
+ * Imposta il valore della propriet� actors.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setActors(String value) {
+ this.actors = value;
+ }
+
+ /**
+ * Recupera il valore della propriet� awards.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getAwards() {
+ return awards;
+ }
+
+ /**
+ * Imposta il valore della propriet� awards.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAwards(String value) {
+ this.awards = value;
+ }
+
+ /**
+ * Recupera il valore della propriet� country.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getCountry() {
+ return country;
+ }
+
+ /**
+ * Imposta il valore della propriet� country.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setCountry(String value) {
+ this.country = value;
+ }
+
+ /**
+ * Recupera il valore della propriet� director.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getDirector() {
+ return director;
+ }
+
+ /**
+ * Imposta il valore della propriet� director.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setDirector(String value) {
+ this.director = value;
+ }
+
+ /**
+ * Recupera il valore della propriet� genre.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getGenre() {
+ return genre;
+ }
+
+ /**
+ * Imposta il valore della propriet� genre.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setGenre(String value) {
+ this.genre = value;
+ }
+
+ /**
+ * Recupera il valore della propriet� imdbID.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getImdbID() {
+ return imdbID;
+ }
+
+ /**
+ * Imposta il valore della propriet� imdbID.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setImdbID(String value) {
+ this.imdbID = value;
+ }
+
+ /**
+ * Recupera il valore della propriet� imdbRating.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getImdbRating() {
+ return imdbRating;
+ }
+
+ /**
+ * Imposta il valore della propriet� imdbRating.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setImdbRating(String value) {
+ this.imdbRating = value;
+ }
+
+ /**
+ * Recupera il valore della propriet� imdbVotes.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getImdbVotes() {
+ return imdbVotes;
+ }
+
+ /**
+ * Imposta il valore della propriet� imdbVotes.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setImdbVotes(String value) {
+ this.imdbVotes = value;
+ }
+
+ /**
+ * Recupera il valore della propriet� language.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getLanguage() {
+ return language;
+ }
+
+ /**
+ * Imposta il valore della propriet� language.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setLanguage(String value) {
+ this.language = value;
+ }
+
+ /**
+ * Recupera il valore della propriet� metascore.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getMetascore() {
+ return metascore;
+ }
+
+ /**
+ * Imposta il valore della propriet� metascore.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setMetascore(String value) {
+ this.metascore = value;
+ }
+
+ /**
+ * Recupera il valore della propriet� plot.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getPlot() {
+ return plot;
+ }
+
+ /**
+ * Imposta il valore della propriet� plot.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPlot(String value) {
+ this.plot = value;
+ }
+
+ /**
+ * Recupera il valore della propriet� poster.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getPoster() {
+ return poster;
+ }
+
+ /**
+ * Imposta il valore della propriet� poster.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPoster(String value) {
+ this.poster = value;
+ }
+
+ /**
+ * Recupera il valore della propriet� rated.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getRated() {
+ return rated;
+ }
+
+ /**
+ * Imposta il valore della propriet� rated.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setRated(String value) {
+ this.rated = value;
+ }
+
+ /**
+ * Recupera il valore della propriet� released.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getReleased() {
+ return released;
+ }
+
+ /**
+ * Imposta il valore della propriet� released.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setReleased(String value) {
+ this.released = value;
+ }
+
+ /**
+ * Recupera il valore della propriet� response.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getResponse() {
+ return response;
+ }
+
+ /**
+ * Imposta il valore della propriet� response.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setResponse(String value) {
+ this.response = value;
+ }
+
+ /**
+ * Recupera il valore della propriet� runtime.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getRuntime() {
+ return runtime;
+ }
+
+ /**
+ * Imposta il valore della propriet� runtime.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setRuntime(String value) {
+ this.runtime = value;
+ }
+
+ /**
+ * Recupera il valore della propriet� title.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getTitle() {
+ return title;
+ }
+
+ /**
+ * Imposta il valore della propriet� title.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setTitle(String value) {
+ this.title = value;
+ }
+
+ /**
+ * Recupera il valore della propriet� type.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * Imposta il valore della propriet� type.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setType(String value) {
+ this.type = value;
+ }
+
+ /**
+ * Recupera il valore della propriet� writer.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getWriter() {
+ return writer;
+ }
+
+ /**
+ * Imposta il valore della propriet� writer.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setWriter(String value) {
+ this.writer = value;
+ }
+
+ /**
+ * Recupera il valore della propriet� year.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getYear() {
+ return year;
+ }
+
+ /**
+ * Imposta il valore della propriet� year.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setYear(String value) {
+ this.year = value;
+ }
+
+}
diff --git a/RestEasy Example/src/main/java/com/baeldung/client/ServicesInterface.java b/RestEasy Example/src/main/java/com/baeldung/client/ServicesInterface.java
new file mode 100644
index 0000000000..53e88961be
--- /dev/null
+++ b/RestEasy Example/src/main/java/com/baeldung/client/ServicesInterface.java
@@ -0,0 +1,44 @@
+package com.baeldung.client;
+
+import com.baeldung.Movie;
+
+import javax.ws.rs.*;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+public interface ServicesInterface {
+
+
+ @GET
+ @Path("/getinfo")
+ @Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
+ Movie movieByImdbID(@QueryParam("imdbID") String imdbID);
+
+
+ @POST
+ @Path("/addmovie")
+ @Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
+ Response addMovie(Movie movie);
+
+
+ @PUT
+ @Path("/updatemovie")
+ @Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
+ Response updateMovie(Movie movie);
+
+
+ @DELETE
+ @Path("/deletemovie")
+ Response deleteMovie(@QueryParam("imdbID") String imdbID);
+
+
+ @GET
+ @Path("/listmovies")
+ @Produces({"application/json"})
+ List listMovies();
+
+}
diff --git a/RestEasy Example/src/main/java/com/baeldung/server/service/MovieCrudService.java b/RestEasy Example/src/main/java/com/baeldung/server/service/MovieCrudService.java
new file mode 100644
index 0000000000..d1973e7037
--- /dev/null
+++ b/RestEasy Example/src/main/java/com/baeldung/server/service/MovieCrudService.java
@@ -0,0 +1,94 @@
+package com.baeldung.server.service;
+
+import com.baeldung.Movie;
+
+import javax.ws.rs.*;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.Provider;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+@Path("/movies")
+public class MovieCrudService {
+
+
+ private Map inventory = new HashMap();
+
+ @GET
+ @Path("/getinfo")
+ @Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
+ public Movie movieByImdbID(@QueryParam("imdbID") String imdbID){
+
+ System.out.println("*** Calling getinfo ***");
+
+ Movie movie=new Movie();
+ movie.setImdbID(imdbID);
+ return movie;
+ }
+
+ @POST
+ @Path("/addmovie")
+ @Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
+ public Response addMovie(Movie movie){
+
+ System.out.println("*** Calling addMovie ***");
+
+ if (null!=inventory.get(movie.getImdbID())){
+ return Response.status(Response.Status.NOT_MODIFIED)
+ .entity("Movie is Already in the database.").build();
+ }
+ inventory.put(movie.getImdbID(),movie);
+
+ return Response.status(Response.Status.CREATED).build();
+ }
+
+
+ @PUT
+ @Path("/updatemovie")
+ @Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
+ public Response updateMovie(Movie movie){
+
+ System.out.println("*** Calling updateMovie ***");
+
+ if (null!=inventory.get(movie.getImdbID())){
+ return Response.status(Response.Status.NOT_MODIFIED)
+ .entity("Movie is not in the database.\nUnable to Update").build();
+ }
+ inventory.put(movie.getImdbID(),movie);
+ return Response.status(Response.Status.OK).build();
+
+ }
+
+
+ @DELETE
+ @Path("/deletemovie")
+ public Response deleteMovie(@QueryParam("imdbID") String imdbID){
+
+ System.out.println("*** Calling deleteMovie ***");
+
+ if (null==inventory.get(imdbID)){
+ return Response.status(Response.Status.NOT_FOUND)
+ .entity("Movie is not in the database.\nUnable to Delete").build();
+ }
+
+ inventory.remove(imdbID);
+ return Response.status(Response.Status.OK).build();
+ }
+
+ @GET
+ @Path("/listmovies")
+ @Produces({"application/json"})
+ public List listMovies(){
+
+ return inventory.values().stream().collect(Collectors.toCollection(ArrayList::new));
+
+ }
+
+
+
+}
diff --git a/RestEasy Example/src/main/java/com/baeldung/server/service/RestEasyServices.java b/RestEasy Example/src/main/java/com/baeldung/server/service/RestEasyServices.java
new file mode 100644
index 0000000000..16b6200ad1
--- /dev/null
+++ b/RestEasy Example/src/main/java/com/baeldung/server/service/RestEasyServices.java
@@ -0,0 +1,40 @@
+package com.baeldung.server.service;
+
+
+import javax.ws.rs.ApplicationPath;
+import javax.ws.rs.core.Application;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Created by Admin on 29/01/2016.
+ */
+
+
+
+@ApplicationPath("/rest")
+public class RestEasyServices extends Application {
+
+ private Set