#On supposera que la bibliothèque est déployée à l'adresse BIBLIO et le portail à l'adresse PORTAIL.
-
Repertoire {
@PUT @Produces(TYPE_MEDIA) @Consumes(TYPE_MEDIA) @ReponsesPUTOption // Requête (méthode http + url) : (put) http://BIBLIO/biblioteque ou (put) http://PORTAIL/portail // Corps : Livre // Réponses (à spécifier par code) : // - 404 : Pas de resultats // - 200 : TYPE_MEDIA contenant un HyperLien Optional<HyperLien> chercher(Livre l);
@PUT @ReponsesPUTOption @Path(JAXRS.SOUSCHEMIN_ASYNC) @Consumes(JAXRS.TYPE_MEDIA) @Produces(JAXRS.TYPE_MEDIA) // Requête (méthode http + url) : (put) http://BIBLIO/biblioteque/async ou (put) http://PORTAIL/portail/async // Corps : Livre // Réponses (à spécifier par code) : // - 404 : Pas de resultats // - 200 : TYPE_MEDIA contenant un HyperLien Future<Optional<HyperLien>> chercherAsynchrone(Livre l, @Suspended final AsyncResponse ar);
@GET @Path(SOUSCHEMIN_CATALOGUE) @Produces(TYPE_MEDIA) // Requête (méthode http + url) : (GET) http://BIBLIO/biblioteque/catalogue ou (GET) http://PORTAIL/portail/catalogue // Corps : VIDE // Réponses (à spécifier par code) : // - 200 : List<HyperLien> HyperLiens repertorier();
-
Archive @Path("{id}") @ReponsesGETNullEn404 // Adresse de la sous-ressource : biblioteque // Requête sur la sous-ressource (méthode http + url) : // Corps : // Réponses (à spécifier par code) : // - 200 : IdentifiantLivre Livre sousRessource(@PathParam("id") IdentifiantLivre id) ;
@Path("{id}") @GET @Produces(JAXRS.TYPE_MEDIA) @ReponsesGETNullEn404 // Requête (méthode http + url) : (GET) http://BIBLIO/biblioteque/{id} // Corps : id du livre // Réponses (à spécifier par code) : // - 200 : IdentifiantLivre // - 404 : si null Livre getRepresentation(@PathParam("id") IdentifiantLivre id);
@POST @ReponsesPOSTEnCreated @Consumes(JAXRS.TYPE_MEDIA) @Produces(JAXRS.TYPE_MEDIA) // Requête (méthode http + url) : (POST) http://BIBLIO/biblioteque/ // Corps : Livre // Réponses (à spécifier par code) : // - 201 : Hyperlien HyperLien ajouter(Livre l); }
-
AdminAlgo @PUT @Path(JAXRS.SOUSCHEMIN_ALGO_RECHERCHE) @Consumes(JAXRS.TYPE_MEDIA) // Requête (méthode http + url) : http://PORTAIL/admin/recherche // Corps : NomAlgo // Réponses (à spécifier par code) : // - VIDE void changerAlgorithmeRecherche(NomAlgorithme algo);
-
Exemple de livre
- Exemple de nom d'algo
-- Analyse des résultats :
recherche sync seq Réalisé en : 7703ms
recherche sync multi Réalisé en : 1543ms
recherche sync stream 8 Réalisé en : 1532ms
recherche sync stream rx Réalisé en : 7602ms
recherche async seq Réalisé en : 7540ms
recherche async multi Réalisé en : 1519ms
recherche async stream 8 Réalisé en : 1524ms
recherche async stream rx Réalisé en : 7534ms
Bilan : En syncrhone les stream 8 et le multi threading est beaucoup plus performant. En ce qui concernent l'asynchrone, on obtient le meme constat. Par ailleurs nous avons testé en utilistant .stream plutot que .paralleleStream et on se rend compte que c'est encore plus rapide puisque la quantité de donné etant si faible qu'il est plus long de diviser les taches puis de les rassembler que des les faires sequentiellement dans le principe des stream avec Java 8.