Tutoriel sur les services Web Java

Bienvenue dans le Tutoriel sur les services Web Java. Ici, nous allons apprendre les services Web, les concepts utiles dans les services Web, puis les différents types d’API que nous avons en Java pour créer des services Web.

Qu’est-ce qu’un service Web

En termes simples, les services accessibles via un réseau sont appelés services Web. Alors, en quoi cela diffère-t-il d’une application Web, qui est également un service accessible via un réseau ? Il existe quelques attributs qui clarifient cette différence.

  • Les applications Web sont destinées aux utilisateurs et doivent être consultées dans un navigateur au format lisible par l’homme, tandis que les services Web sont destinés aux applications afin d’accéder aux données au format XML, JSON, etc.
  • Les applications Web utilisent toujours le protocole HTTP/HTTPS, tandis que les services Web traditionnels utilisent le protocole SOAP. Récemment, REST gagne en popularité, il s’agit d’un style d’architecture et fonctionne presque toujours sur le protocole HTTP/HTTPS.
  • Les applications Web ne sont pas destinées à être réutilisées, tandis que c’est l’un des avantages des services Web. Un seul service Web peut être utilisé par différents types d’applications.
  • Une application Web peut accéder aux services Web pour récupérer des données ou effectuer des tâches, mais les services Web ne peuvent pas accéder aux applications Web pour récupérer des données.
  • Les applications Web sont capables de maintenir une session utilisateur, tandis que les services Web sont sans état.

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.

Types de services Web

Il existe deux types de services Web.

  1. SOAP : SOAP signifie Simple Object Access Protocol. SOAP est un protocole standard de l’industrie basé sur XML pour la conception et le développement de services Web. Étant donné qu’il est basé sur XML, il est indépendant de la plate-forme et du langage. Ainsi, notre serveur peut être basé sur JAVA et le client peut être sur .NET, PHP, etc. et vice versa.
  2. REST : REST est un style architectural pour le développement de services Web. Il gagne en popularité récemment car il a une courbe d’apprentissage plus faible par rapport à SOAP. Les ressources sont des concepts clés des services Web RESTful et elles sont identifiées de manière unique par leurs URI.

Services Web Java

Java fournit sa propre API pour créer des services Web SOAP et REST.

  1. JAX-WS : JAX-WS signifie Java API for XML Web Services. JAX-WS est une API Java basée sur XML pour la création de serveurs et d’applications clientes de services Web.
  2. JAX-RS : Java API for RESTful Web Services (JAX-RS) est l’API Java pour la création de services Web REST. JAX-RS utilise des annotations pour simplifier le développement et le déploiement de services Web.

Les deux de ces APIs font partie de l’installation standard de JDK, nous n’avons donc pas besoin d’ajouter des jars pour travailler avec eux. Les deux de ces APIs utilisent très largement des annotations.

Application Hello World JAX-WS

Créons une application JAX-WS Hello World très simple. 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());
	}
}

C’est tout. Exécutez simplement cette application et notre service web SOAP Hello World JAX-WS est publié. L’image ci-dessous montre l’invocation de ce service web JAX-WS via SOAP UI. C’est tout pour un tutoriel très basique sur le service web JAX-WS. Voici quelques articles que vous devriez lire pour une meilleure compréhension des services web SOAP et JAX-WS.

  1. Tutoriel JAX-WS
  2. Déploiement d’un service web JAX-WS sur Tomcat
  3. Exemple de service web SOAP utilisant Eclipse et Apache Axis
  4. Tutoriel sur les services web Apache Axis 2

Bonjour, application JAX-RS Hello World

Jersey est la mise en œuvre de référence de l’API JAX-RS, elle ne fait pas partie de la JDK standard et nous devons inclure tous les fichiers JAR requis. La meilleure façon est d’utiliser Maven pour la construction, alors créez un projet web dynamique simple, puis convertissez-le en Maven dans Eclipse. Voici le fichier pom.xml final contenant les dépendances requises.

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

Ajoutez maintenant le servlet Jersey à notre descripteur de déploiement web.xml en tant que contrôleur 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>

Ces deux étapes sont nécessaires pour la configuration initiale, voici notre classe de service 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;
	}
}

Exportez-le simplement en tant que fichier WAR, puis accédez-y dans le navigateur comme indiqué dans l’image ci-dessous. Vous pouvez modifier la dernière partie de l’URL et le message retourné changera en conséquence. Vous pouvez voir à quel point il était facile de créer un service web RESTful en utilisant l’API JAX-RS. Cependant, il y a plus à apprendre, suivez les articles ci-dessous pour en savoir plus.

  1. Services Web RESTful
  2. Tutoriel RESTEasy
  3. Tutoriel Jersey

C’est tout pour une brève introduction des services web Java, enfin si vous vous préparez à un entretien, parcourez les questions d’entretien sur les services web. Références : Page Oracle JAX-WS, Page Oracle JAX-RS.

Source:
https://www.digitalocean.com/community/tutorials/java-web-services-tutorial