Sigue los siguientes 5 pasos para poner en marcha tu Servicio Web Rest
Crear Proyecto Web
- Crear un proyecto nuevo: “Dinamic Web Proyect”.
- Nombre: “rest_ejercicio1_hola”
- Activar Web Module: 2.5
- Activar la creación del descriptor (web.xml).
Una vez creado el proyecto, revisa dos configuraciones:
- Clic derecho en el nombre del proyecto / Propiedades / Project Facets y verifica que:
- Dynamic Web Module: 2.5
- Java: 1.8
- Javascript 1.0
- Clic derecho en el nombre del proyecto / Propiedades / Java Build Path
- JRE System Library [JavaSE-1.8]
- Server Runtime [Apache Tomcat v10.1]
NOTA IMPORTANTE: Para este proyecto se utiliza Tomcat v10.1
Instala librerías
- Opción Manual:
- Copiar todos los Jars de Jersey, jackson, jAXB en la carpeta
lib
, de WEB-INF - https://ciniguez.github.io/balava/libreriasjava/(Sección Servicios Web - REST)
- Copiar todos los Jars de Jersey, jackson, jAXB en la carpeta
- Opción con Maven (pom.xml):
- Nota: Líneas 8 y 10 deben ser cambiadas por el nombre del Artefacto o proyecto particular
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.epn.ws</groupId>
<artifactId>serviciosWebREST</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>serviciosWebREST</name>
<build>
<finalName>serviciosWebREST</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<inherited>true</inherited>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.4.0</version>
</plugin>
</plugins>
</build>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey</groupId>
<artifactId>jersey-bom</artifactId>
<version>${jersey.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<!-- use the following artifactId if you don't need servlet 2.x compatibility -->
<!-- artifactId>jersey-container-servlet</artifactId -->
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
</dependency>
<!-- uncomment this to get JSON support -->
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-binding</artifactId>
</dependency>
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>4.0.1</version>
</dependency>
</dependencies>
<properties>
<jersey.version>3.1.5</jersey.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<war.mvn.plugin.version>3.4.0</war.mvn.plugin.version>
</properties>
</project>
Anotar clase
Crea una clase y anótala para convertirla en el servicio ( o recurso)
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
@Path("hello")
public class Hola {
@GET @Produces(MediaType.TEXT_PLAIN)
public String saludo() {
return "Hola, desde RESTful";
}
}
Registrar el Servlet
Para registrar el Servlet de Jersey es necesario agregar contenido en el fichero web.xml del proyecto. En el siguiente ejemplo "Código del fichero web.xml", el contenido agregado está entre las líneas 9-21. Puedes abrir tu fichero web.xml, copiar y pegar las líneas 9-21. Aquí la explicación de este contenido:
- Registrar el servlet de Jersey en el descriptor (web.xml) (Líneas: 9 - 17)
- Asociar el servlet de Jersey con el paquete de java que contiene las clases que representan los servicios (Línea 14)
- Mapear el servlet para que capture las peticiones "/rest/*" (Línea 20)
Código del fichero web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>servicio</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
Ejecutar e invocar
- Ejecuta el servidor ( Run as Server)
- Paso 6: Invocar al Servicio.- Inicia un navegador (Google Chrome, Firefox, etc) y consulta la URL: http://localhost:8080/RS-Server/rest/hello