Bienvenido al Tutorial de Servicios Web en Java. Aquí aprenderemos sobre servicios web, conceptos útiles en servicios web y luego los diferentes tipos de API que tenemos en Java para crear servicios web.
¿Qué es un Servicio Web?
En palabras simples, los servicios que pueden ser accedidos a través de una red se llaman servicios web. Entonces, ¿cómo difieren de las aplicaciones web? También son servicios que se acceden a través de una red. Hay algunas características que clarifican esta diferencia.
- Las aplicaciones web están destinadas a usuarios y a ser accedidas en un navegador con un formato legible para humanos, mientras que los servicios web están destinados a que las aplicaciones accedan a los datos en formato XML, JSON, etc.
- Las aplicaciones web siempre utilizan el protocolo HTTP/HTTPS, mientras que los servicios web tradicionales utilizan el protocolo SOAP. Recientemente, REST está ganando popularidad, que es un estilo de arquitectura y casi siempre se ejecuta en el protocolo HTTP/HTTPS.
- Las aplicaciones web no están destinadas a ser reutilizables, mientras que este es uno de los beneficios de los servicios web. Un solo servicio web puede ser utilizado por diferentes tipos de aplicaciones.
- Las aplicaciones web pueden acceder a servicios web para acceder a algunos datos o para realizar algunas tareas, pero los servicios web no pueden acceder a aplicaciones web para obtener algunos datos.
- Las aplicaciones web son capaces de mantener la sesión del usuario, los servicios web no tienen estado.
I hope above differences are good enough to clear any confusion with web applications and web services. Both are different concepts and meant for different purpose.
Tipos de Servicios Web
Existen dos tipos de servicios web.
- SOAP: SOAP significa Protocolo Simple de Acceso a Objetos. SOAP es un protocolo estándar de la industria basado en XML para el diseño y desarrollo de servicios web. Debido a que está basado en XML, es independiente de la plataforma y del lenguaje. Por lo tanto, nuestro servidor puede basarse en JAVA y el cliente puede ser en .NET, PHP, etc. y viceversa.
- REST: REST es un estilo arquitectónico para el desarrollo de servicios web. Está ganando popularidad recientemente porque tiene una curva de aprendizaje pequeña en comparación con SOAP. Los recursos son conceptos clave de los servicios web RESTful y se identifican de manera única por sus URIs.
Servicios Web en Java
Java proporciona su propia API para crear tanto servicios web SOAP como REST.
- JAX-WS: JAX-WS significa Java API for XML Web Services. JAX-WS es una API de Java basada en XML para construir servidores y aplicaciones cliente de servicios web.
- JAX-RS: Java API for RESTful Web Services (JAX-RS) es la API de Java para crear servicios web REST. JAX-RS utiliza anotaciones para simplificar el desarrollo e implementación de servicios web.
Ambas de estas APIs son parte de la instalación estándar de JDK, por lo que no necesitamos agregar ningún archivo JAR para trabajar con ellas. Ambas de estas APIs utilizan anotaciones de manera muy intensiva.
Aplicación Hola Mundo JAX-WS
Creemos una aplicación muy simple de Hola Mundo JAX-WS. TestService.java
package com.journaldev.jaxws.service;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.ws.Endpoint;
@WebService
@SOAPBinding(style = SOAPBinding.Style.DOCUMENT)
public class TestService {
@WebMethod
public String sayHello(String msg){
return "Hello "+msg;
}
public static void main(String[] args){
Endpoint.publish("https://localhost:8888/testWS", new TestService());
}
}
Y eso es todo. Simplemente ejecute esta aplicación y nuestro servicio web SOAP de Hola Mundo JAX-WS será publicado. La imagen a continuación muestra la invocación de este servicio web JAX-WS a través de SOAP UI. Eso es todo para un tutorial muy básico de servicios web JAX-WS. A continuación, se encuentran algunos de los artículos que debería leer para comprender mejor los servicios web SOAP y JAX-WS.
- Tutorial JAX-WS
- Implementación de Servicios Web JAX-WS en Tomcat
- Ejemplo de Servicio Web SOAP usando Eclipse y Apache Axis
- Tutorial de Servicios Web Apache Axis 2
Hola Mundo Aplicación JAX-RS
Jersey es la implementación de referencia de la API JAX-RS, no es parte del JDK estándar y debemos incluir todos los archivos JAR requeridos. La mejor manera es utilizar la construcción con Maven, así que crea un proyecto web dinámico simple y luego conviértelo a Maven en Eclipse. Aquí está el archivo pom.xml final con las dependencias requeridas.
<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>JAX-RS-HelloWorld</groupId>
<artifactId>JAX-RS-HelloWorld</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.19</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>1.19</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Ahora agrega el servlet de Jersey a nuestro descriptor de implementación web.xml como controlador frontal.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xmlns="https://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="https://xmlns.jcp.org/xml/ns/javaee https://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>JAX-RS-HelloWorld</display-name>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.journaldev.jaxrs.service</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
Los dos pasos anteriores son necesarios para la configuración inicial, a continuación se muestra nuestra clase de servicio Hello World JAX-RS.
package com.journaldev.jaxrs.service;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
@Path("/test")
public class TestService {
@GET
@Path("/hello/{msg}")
public String sayHello(@PathParam(value="msg") String msg){
return "Hello "+msg;
}
}
Solo expórtalo como un archivo WAR y luego accede a él en el navegador como se muestra en la imagen de abajo. Puedes cambiar la última parte de la URL y el mensaje devuelto cambiará en consecuencia. Puedes ver lo fácil que fue crear un servicio web RESTful utilizando la API JAX-RS. Sin embargo, hay más, sigue los siguientes artículos para aprender más.
Eso es todo para una rápida introducción de los servicios web de Java, finalmente, si te estás preparando para una entrevista, revisa las Preguntas de Entrevista sobre Servicios Web. Referencias: Página de Oracle de JAX-WS, Página de Oracle de JAX-RS
Source:
https://www.digitalocean.com/community/tutorials/java-web-services-tutorial