TP2 : Création et tests de services Web basés SOAP

publicité
M2 SIR
2016-2017
TP2 : Création et tests de services Web basés SOAP
Objectif du TP
L’objectif de ce TP est de realiser des services Web SOAP en utilisant la librairie Spring et de
tester ces services en utilisant SOAPUI.
Environnement de développement
Environnement de developpement :
 IDE Netbeans
 JDK 6 ou 7
 Serveur TomEE Plus 1.7.1
 Librairies : Spring 2.5.6
I. Prise en main de JAX-WS Spring Web Services
Pour cette partie, vous allez developper un service Spring. Vous allez reprendre le meme
exemple de service pour le calcul de la somme de deux entiers et suivre les etapes suivantes :
1. Création d’un projet Maven

Télécharger le serveur TomEE plus1

Ajouter ce serveur à Netbeans en le renommant TomEE plus.

Créer une Maven Web application que vous nommerez « Spring_WS » : nouveau
projetMavenWeb application et lui associer le serveur TomEE Plus. Maven est un
outil de construction de projets (build) open source développé par la fondation
Apache. Il permet de gérer des dépendances vis-à-vis des bibliothèques nécessaires au
projet.
2. Création du service Web

Définir l’interface du service « CalculService » (java interface) et l’implémentation du
service (java class) « CalculServiceImpl ».

Pour créer le service Web, vous avez besoin d’annoter l’interface « CalculService » avec
l’annotation JAX-WS qui consiste à indiquer qu’il s’agit d’un service Web. Déclarer la
méthode de l’interface annotée.
3. Configuration de Spring et des dépendances

Définir les dépendances2 de Jax-ws et Spring3 dans le fichier « pom.xml »
<!—Jax-ws framework -->
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.2.7</version>
</dependency>
<!-- Spring framework -->
1
http://tomee.apache.org/download/tomee-1.7.1.html
https://maven.apache.org/guides/introduction/introduction -to-dependency-mechanism.html
3
https://mvnrepository.com/artifact/org.springframework
2
Page 1
M2 SIR
2016-2017
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring-version}</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring-version}</version>
</dependency>
<!-- JAX-WS/Spring integration -->
<dependency>
<groupId>org.jvnet.jax-ws-commons.spring</groupId>
<artifactId>jaxws-spring</artifactId>
<version>1.8</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
</exclusions>
</dependency>

Configurer le fichier « web.xml » (standard deployment descriptor) qui se trouve
sous Webapp/WEB-INF. Ce fichier contient la définition des servlets4.
<web-app>
<!-- this is for Spring -->
<listener>
<listenerclass>org.springframework.web.context.ContextLoaderListener</list
ener-class>
</listener>
<!-- these are for JAX-WS -->
<servlet>
<servlet-name>jaxws-servlet</servlet-name>
<servletclass>com.sun.xml.ws.transport.http.servlet.WSSpringServlet</serv
let-class>
4
https://jax-ws-commons.java.net/spring/
Page 2
M2 SIR
2016-2017
</servlet>
<servlet-mapping>
<servlet-name>jaxws-servlet</servlet-name>
<url-pattern>/add</url-pattern>
</servlet-mapping>
... if you deploy more services,
you might need more <servlet-mapping>s ...
</web-app>

Configurer le fichier « applicationContext.xml » qui est le fichier de configuration de
Spring5. Il doit se trouver sous sous Webapp/WEB-INF. Ce fichier va comporter les
espaces de noms, les imports de fichiers, la définition des beans et le endpoint.
Voici un exemple :
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ws="http://jax-ws.dev.java.net/spring/core"
xmlns:wss="http://jax-ws.dev.java.net/spring/servlet"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://jax-ws.java.net/spring/core
http://jax-ws.java.net/spring/core.xsd
http://jax-ws.java.net/spring/servlet
http://jax-ws.java.net/spring/servlet.xsd">
<wss:binding url="/add" service="#addService" />
<wss:binding url="/sub">
<wss:service><!-- nested bean is of course fine -->
<ws:service bean="#myService" />
</wss:service>
</wss:binding>
<!-- this bean implements web service methods -->
<bean id="myService" class="foo.MyService" />
<!-- simplest definition only needs the class name -->
<ws:service id="addService" impl="foo.MyAddService"
handlers="#myHandler"/>
<bean id="myHandler" class="foo.MyHandler" />
4. Déploiement de l’application

Déployer l’application sur TomEE plus en faisant un run du projet.

Vous allez ajouter un nouveau service qui réalise le produit de deux entiers et
redéployer votre projet.
5. Test du service
5

Tester votre service avec SOAPUI. Quels noms portent les arguments ?

Ajouter les annotations nécessaires à votre service.
http://cxf.apache.org/docs/writing-a-service-with-spring.html
Page 3
M2 SIR
2016-2017
II .Service Web de Réservation de vols avec Maven et Spring
L’objectif de cet exercice est de creer une application Maven pour la reservation de vols. Le
service Web doit pouvoir :


Lister les vols selon un critère de recherche : villes et pays de départ et d’arrivée, jour et
horaire de départ.
Fournir des opérations pour la gestion d’une réservation pour un client donné.
1. Creer une application de type Maven Web Application que vous nommerez
« TripBooking ».
2. Pour les vols :
o Creer la classe Vols qui represente les vols. Chaque vol aura un identifiant, un
pays et une ville de depart, un pays et une ville d’arrivee et une heure de depart.
o Creer une interface representant la description du service Web avec des
methodes permettant l’ajout d’un vol, d’afficher l’ensemble des vols et de
rechercher un vol par son numéro.
o Créer la classe implémentant l’interface
3. Pour la reservation :
o Creer une classe pour la reservation de vols. Une reservation aura un numero et
le vol concerne.
o Creer une classe permettant l'acces au service Web de Reservation. Vous allez
definir des methodes pour la creation d’une reservation, la liste des reservations,
de recherche de reservation a partir d’un numero et de suppression d’une
reservation.
4. Déployer et Tester vos services.
III. Client des services Pays, aéroport et réservation
Vous allez ecrire un client qui affiche la liste des vols, des reservations, de creer une reservation
de vol et d’afficher l’aeroport du pays de votre choix et la devise utilisee par le pays destination
en invoquant des services Web existants.
Le client developpe en Java se compose de trois parties.
Page 4
M2 SIR
2016-2017
Etape 1 : Création d’un projet Java
Vous allez creer un projet que vous nommerez « TripBookingClient ». Une fois le projet cree, vous
pouvez ajouter soit une interface graphique dans le projet (choisir New/JFrame Form ; saisir
ensuite JFrame1 comme nom de la classe puis cliquer sur Finish) soit utiliser Java EE avec les EJB
(JSP, Servlet, …).
Etape 2 : Conception de la couche d’affichage
Vous allez concevoir la partie affichage de telle sorte a avoir la liste des vols des aeroports du
pays selectionne, des reservations et la devise utilisee par le pays destination.
Etape 3 : Création de la couche SOAP
En plus des services precedemment crees, vous allez invoquer deux services :
 Airport Information Web Service :
http://www.webservicex.net/New/Home/ServiceDetail/20
WSDL : http://www.webservicex.net/airport.asmx?WSDL

Country Details : http://www.webservicex.net/New/Home/ServiceDetail/17
WSDL : http://www.webservicex.net/country.asmx?WSDL
Etape 4 : Création de la couche XML (couche métier)
Apres avoir cree le projet et ajoute les services Web a celui-ci, il est important d’associer les
boutons/composants de votre interface graphique au declenchement des fonctions des services
web permettant d’obtenir les aeroports, les vols, les reservations et la devise utilisee.
Page 5
Téléchargement