WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Analyse d'intégration des technologies web services dans un système distribué pour l'authentification et le suivi permanent des étudiants.


par Daniel Kavale
Université Révérend Kim - Licence en Conception des systèmes d'information et Gestion des Bases des données 2020
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

IV.4.3. Déploiement du Service Web

Maintenant que nos services web sont créés, nous allons passer au déploiement de notre application ou à sa publication. Pour ce faire, il suffit de se positionner sur le noeud « Restful Web services » et faire un clic droit puis sélectionner Test Restful web services. Comme nos configurations sur les figures précédentes étaient basées sur le serveur GlassFish, notre application sera déployée sur ce denier.

Figure IV.17. Test et déploiement des services Web Restful

55

Etant donné que le test se fait en local, les services web publiés seront visualisés via un navigateur web où ils peuvent également être testés. Dans notre cas ici, nous le ferons à l'aide de Google chrome, et nous y voilà :

Figure IV.18. Présentation des services publiés

Cette interface représente en tout ce que nous avons appelé plus haut annuaire des services, il contient les services publiés et leurs descriptions. Les services sont déployés ou publiés grâce au protocole http comme nous pouvons le voir dans la barre d'url de notre navigateur.

Remarque : Au début du corps de notre page web se situe un label WADL qui signifie Web Application Definition Language, il décrit les ressources fournies par le service, comment les utiliser et les relations qui existent entre elles. Dans notre test, il se presente comme suit :

http://!oca!host:8080/MomMemoire/webresources/app!ication.wad!

C'est l'équivalent du WSDL de services web basé sur le protocole SOAP. En cliquant dessus, il nous présente les descriptions suivantes :

Figure IV.19. Description de quelques services dans notre wadl

Maintenant que nous avons fini l'implémentation et le déploiement des services web, Analysons quelques codes générés qui nous intéressent :

Pour chaque classe entité, l'IDE nous génère une classe façade correspondante. Étudions la classe EtudiantFacadeREST.java :

EtudiantFacadeREST.java

@Stateless

@Path("gestcurcis.etudiant")

public class EtudiantFacadeREST extends AbstractFacade<Etudiant> {

@PersistenceContext(unitName = "GestCursusPU") private EntityManager em;

private EtudiantPK getPrimaryKey(PathSegment pathSegment) { gestcurcis.EtudiantPK key = new gestcurcis.EtudiantPK(); javax.ws.rs.core.MultivaluedMap<String, String> map = pathSegment.getMatrixParameters();

java.util.List<String> idEtud = map.get("idEtud"); if (idEtud != null && !idEtud.isEmpty()) {

key.setIdEtud(new java.lang.Integer(idEtud.get(0)));

}

java.util.List<String> matricule = map.get("matricule"); if (matricule != null && !matricule.isEmpty()) { key.setMatricule(matricule.get(0));

}

}

56

return key;

57

public EtudiantFacadeREST() { super(Etudiant.class);

}

@POST

@Override

@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})

public void create(Etudiant entity) {

super.create(entity);

}

@PUT

@Path("{id}")

@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public void edit(@PathParam("id") PathSegment id, Etudiant entity) { super.edit(entity);

}

@DELETE

@Path("{id}")

public void remove(@PathParam("id") PathSegment id) { gestcurcis.EtudiantPK key = getPrimaryKey(id);

super.remove(super.find(key));

}

@GET

@Path("{id}")

@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})

public Etudiant find(@PathParam("id") PathSegment id) {

gestcurcis.EtudiantPK key = getPrimaryKey(id);

return super.find(key);

}

@GET

@Override

@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})

public List<Etudiant> findAll() {

return super.findAll();

}

58

@GET

@Path("{from}/{to}")

@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})

public List<Etudiant> findRange(@PathParam("from") Integer from,

@PathParam("to") Integer to) {

return super.findRange(new int[]{from, to});

}

@GET

@Path("count")

@Produces(MediaType.TEXT_PLAIN) public String countREST() {

return String.valueOf(super.count());

}

@Override

protected EntityManager getEntityManager() { return em;

}

}

? L'annotation @Stateless indique que la classe est une « statelass session bean », en d'autre mot la classe est un servie. Comme nous l'avons défini, un service n'a pas d'état, il referme des fonctions, ...

? L'annotation @Path permet de définir l'URI dont la classe va se servir pour les requêtes.

Comme on peut le remarquer, plusieurs méthodes de cette classe sont annotées par les annotations : @POST, @PUT, @DELETE et @GET. Ces méthodes seront automatiquement invoquées quand notre service Web répondra à une requête HTTP. Notons par ailleurs que plusieurs des méthodes sont aussi annotées par l'annotation @Path, la raison est que certaines d'entre elles auront besoin de recevoir un paramètre.

Sur la figure qui va suivre nous allons, nous allons voir une portion de résultat de l'invocation du service etudiant par l'adresse :

http://localhost:8080/MomMemoire/webresources/memoire.etudiant

Figure IV.20. Résultat de l'uri du service étudiant

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Le don sans la technique n'est qu'une maladie"