Crear JAVA RESTful Webservices con Jersey - dynamic web project maven project JSON

Jersey RESTful Web Services framework is an open source framework for developing RESTful Web Services in Java.

1)  Crear el proyecto
click derecho / new / dynamic web project

por ejemplo
en porject name : services-api

2) Crear el deployment descriptor file (osea el web.xml)

click derecho sobre el proyecto/ java EE tools/ generate deployment descriptor stub

3) editar el web.xml

ir a WebContent/WEB-INF/web.xml

agregar las sgts lineas
.....

<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
4) convertir el proyecto a uno de tipo maven
(eso lo hacemos para poder agregar librerias como por ejemplo para manipular json)
click derecho sobre el proyecto/ configure / convert to maven project
5) editar el archivo pom.xml 
agregar las sgts lineas
<dependencies>
<dependency>
<groupId>asm</groupId>
<artifactId>asm-all</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-bundle</artifactId>
<version>1.14</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20090211</version>
</dependency>
</dependencies>
6) Crear la clase con los servicios
click dere. sobre el proyecto/ new / class
package> com.example
name> MyApiServices
en este ejemplo el servicio recibira por POST datos en formato json
y unicamente devolvera lo que recibe.
@Path("/")
public class MyApiServices {
@POST
@Path("/myApiService")
@Consumes(MediaType.APPLICATION_JSON)
public Response apiREST(InputStream incomingData) {
StringBuilder builder = new StringBuilder();
try {
BufferedReader in = new BufferedReader(new InputStreamReader(incomingData));
String line = null;
while ((line = in.readLine()) != null) {
builder.append(line);
}
} catch (Exception e) {
System.out.println("Error Parsing: - ");
}
System.out.println("Datos recibidos: " + builder.toString());
// return HTTP response 200 in case of success
return Response.status(200).entity(builder.toString()).build();
}
 }
 7) agregar el proyecto al Tomcat Server

en la pestaña de Servers 
click derecho sobre el servidor creado previamente (en mi caso Tomcat v8.0 Server at localhost)

add/remove y agregamos nuestro pyecto.

8) ejecutar el Tomcat Server y testear el service

-click dere sobre el server y "start"

en firefox usamos la extension REstClient http://restclient.net/

en HEADER crear Content-type : application/json

Method: POST

Url: http://localhost:8080/services-api/api/myService

en el Body:
{
    "usuario": {
        "id": "1001",
        "nombre": "Juan",
        "apellido": "Perez"
    }
}

al hacer click en [send]
obtendremos

{ "usuario": { "id": "1001", "nombre": "Juan", "apellido": "Perez" }}
 fuente:
http://crunchify.com/create-very-simple-jersey-rest-service-and-send-json-data-from-java-client/

linux ubuntu mint actualizar chrome

 desde una terminal: $ sudo apt update $ sudo apt install google-chrome-stable