Benvenuti al Tutorial Java Web Services. Qui impareremo sui servizi web, concetti utili nei servizi web e poi i diversi tipi di API che abbiamo in Java per creare servizi web.
Cosa è un Web Service
In parole semplici, i servizi che possono essere accessi tramite la rete sono chiamati servizi web. Quindi, in cosa differiscono dalle applicazioni web? Sono anche servizi accessibili tramite la rete. Ci sono alcune caratteristiche che chiariscono questa differenza.
- Le applicazioni web sono destinate agli utenti e devono essere accessibili tramite browser con un formato leggibile dall’utente, mentre i servizi web sono destinati alle applicazioni per accedere ai dati in formato XML, JSON, ecc.
- Le applicazioni web utilizzano sempre il protocollo HTTP/HTTPS, mentre i tradizionali servizi web utilizzano il protocollo SOAP. Recentemente, REST sta diventando popolare ed è uno stile architetturale che funziona quasi sempre su protocollo HTTP/HTTPS.
- Le applicazioni web non sono destinate alla riutilizzabilità, mentre questo è uno dei vantaggi dei servizi web. Un singolo servizio web può essere utilizzato da diversi tipi di applicazioni.
- Le applicazioni web possono accedere ai servizi web per recuperare dati o eseguire alcune attività, ma i servizi web non possono accedere alle applicazioni web per recuperare dati.
- Le applicazioni web sono in grado di mantenere la sessione utente, mentre i servizi web sono senza stato.
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.
Tipi di servizi Web
Esistono due tipi di servizi Web.
- SOAP: SOAP significa Simple Object Access Protocol. SOAP è un protocollo standard del settore basato su XML per la progettazione e lo sviluppo di servizi Web. Essendo basato su XML, è indipendente dalla piattaforma e dal linguaggio. Quindi il nostro server può basarsi su JAVA e il client su .NET, PHP, ecc. e viceversa.
- REST: REST è uno stile architetturale per lo sviluppo di servizi Web. Sta guadagnando popolarità di recente perché ha una curva di apprendimento ridotta rispetto a SOAP. Le risorse sono concetti fondamentali dei servizi Web RESTful e sono identificate in modo univoco dai loro URI.
Servizi Web Java
Java fornisce la propria API per creare sia servizi Web SOAP che REST.
- JAX-WS: JAX-WS sta per Java API for XML Web Services. JAX-WS è un’API Java basata su XML per la creazione di server e applicazioni client di servizi Web.
- JAX-RS: Java API for RESTful Web Services (JAX-RS) è l’API Java per la creazione di servizi Web REST. JAX-RS utilizza annotazioni per semplificare lo sviluppo e la distribuzione dei servizi Web.
Entrambi questi API fanno parte dell’installazione standard di JDK, quindi non è necessario aggiungere alcun JAR per lavorare con essi. Entrambi questi API utilizzano abbondantemente le annotazioni.
Hello World JAX-WS Application
Creiamo un’applicazione molto semplice di Hello World 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());
}
}
Ecco tutto. Esegui questa applicazione e il nostro servizio web SOAP Hello World JAX-WS sarà pubblicato. Nell’immagine sottostante è mostrata l’invocazione di questo servizio web JAX-WS tramite SOAP UI. Questo è tutto per un tutorial molto basico del servizio web JAX-WS. Di seguito ci sono alcuni articoli che dovresti leggere per una migliore comprensione dei servizi web SOAP e di JAX-WS.
- JAX-WS Tutorial
- Deployment del servizio web JAX-WS su Tomcat
- Esempio di servizio web SOAP con Eclipse e Apache Axis
- Tutorial sui servizi web Apache Axis 2
Ciao mondo Applicazione JAX-RS
Jersey è l’implementazione di riferimento dell’API JAX-RS, non fa parte dello standard JDK e dobbiamo includere tutti i jar richiesti. Il modo migliore è utilizzare la build di Maven, quindi creare un semplice progetto web dinamico e convertirlo in Maven in Eclipse. Ecco il file pom.xml finale con le dipendenze richieste.
<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>
Aggiungi ora il servlet Jersey al nostro descrittore di distribuzione web.xml come front controller.
<?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>
Le due fasi precedenti sono necessarie per la configurazione iniziale, di seguito è riportata la nostra classe di servizio 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;
}
}
Esportala come file WAR e accedila nel browser come mostrato nell’immagine sottostante. Puoi cambiare l’ultima parte dell’URL e il messaggio restituito cambierà di conseguenza. Puoi vedere quanto sia stato facile creare un servizio web RESTful utilizzando l’API JAX-RS. Tuttavia, c’è di più, segui gli articoli seguenti per saperne di più.
Ecco tutto per una breve introduzione ai servizi web Java, infine se ti stai preparando per un colloquio, dai un’occhiata alle Domande di Intervista sui Servizi Web. Riferimenti: Pagina Oracle di JAX-WS, Pagina Oracle di JAX-RS
Source:
https://www.digitalocean.com/community/tutorials/java-web-services-tutorial