Saltar la navegación

Ejercicio 1: Hola Rest

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:
  • 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

Creado con eXeLearning (Ventana nueva)