 -
Page 1
TP4 : Services Web REST

          
-       
1
      
2
es instructions suivantes :
VMap Geocoding. Vous allez vous rendre sur le
site suivant : https://developers.google.com/maps/documentation/javascript/get-api-key et
bien suivre les instructions pour la cation de la clé. Sauvegardez la cobtenue, vous
en aurez besoin.
Cer un nouveau projet de type Java Application et vérifier que la classe main est bien
cée.
Ajouter le service Google Map Geocoding 
GoogleGeocoding Service.
Faire un drag et drop de « geocode » dans la thode « main» . Vous pouvez modifier les
paramètres par défaut qui apparaissent dans le pop-up comme suit :
q = "vieux port, marseilles";
output = "xml"; // ou en json
Modifier votre main comme suit :
 

 
  

 
   

 


Votre projet a émodif. En effet, 4 classes ont é créées :
o GoogleGeocodingServiceAuthenticator.java : permet de vérifier la c dans le
fichier properties.
o RestConnection.java : 
o RestResponse.java :cure les dones retournées par Google.
1 https://developers.google.com/maps/documentation/geocoding/intro?hl=fr
2 https://netbeans.org/kb/docs/websvc/zillow.html
Google Maps Geocoding API
 -
Page 2
o GoogleGeocodingService: représente la classe utilisée par votre servlet pour
interagir avec les autres classes et Google
Modifier le fichier « googlegeocodingserviceauthenticator.properties» qui se trouve sous
le package « org.netbeans.saas.google » en ajoutant la clé que vous avez récupée.
Ouvrir la classe « GoogleGeocodingService.java »  et modifier la méthode
« geocode » comme suit :
public static RestResponse geocode(String q, String output) throws
IOException {
String apiKey =
GoogleGeocodingServiceAuthenticator.getApiKey();
String[][] pathParams = new String[][]{};
String[][] queryParams = new String[][]{{"address", q},
{"key", "" + apiKey + ""},
{"output", output}};
RestConnection conn = new
RestConnection("https://maps.googleapis.com/maps/api/geocode/xml",
pathParams, queryParams);
sleep(1000);
return conn.get(null);
}

              
               
 
           



Cer une base de dones 
Cer les services web REST à partir de la base de dones
Déployer les services web 
Tester les services veloppés
Cer un client pour consommer le service web
1. Création de de base de données
        

        

    --
--

Développement d’un service REST pour la réservation d’un tel
 -
Page 3
2. nération des entités grâce à JPA
             
 

Cer une classe entité (New Entity Class) que vous nommerez « Hotel » représentant
les hôtels par leur identifiant (idHotel), leur nom (nom_Hotel), leur adresse (adresse), leur
code postal (code_postal), leur ville (ville), le nombre NbreEtoiles) et le prix (prix)
 .         choisir EclipseLink comme
Fournisseur de persistence3 (Persistence Provider). Vous sélectionnerez ensuite comme
Data Source la base de données que vous venez de cer. Vous nommerez le package
ENTITE.
Ajouter les attributs ainsi que les thodes manquantes (constructeurs, les getters et les
setters) dans la classe Hotel.java.
Quelle est la différence entre une classe Java et une classe entité ?
3. Création, déploiement et test du service de recherche dhôtels
Cer un service web REST à partir de la classe entité « Hotel ». Pour cela, vous allez
sélectionner New
cée et gérer le service. Que remarquez-vous ? .
Déployer (clic droit sur le projetdeploy) et tester le web service Rest (clic droit sur le
projet Test Restful Web Services. Quel résultat obtenez-vous et pourquoi?
Insérer des données dans la table de votre base de données et vérifier que votre contexte
de persistence (fichier « persistence.xml ») est en mode create. Refaire le test des services
web. Sélectionner GET (application/xml) et cliquer sur Test. Quel résultat obtenez-vous et
pourquoi?
Tester les différentes thodes HTTP :
- GET : pour récupérer tous les hôtels et rechercher les hôtels par leur id.
- POST : pour créer un nouvel hôtel
- PUT : pour modifier un hôtel
- DELETE : pour supprimer un hôtel
Cer deux thodes    : une thode de recherche par ville et une
méthode de recherche par prix et tester le service. Pour cela vous allez suivre les
indications suivantes :
-         
gce au langage JPQL4. Une reqte nommée est déclarée dans une annotation
@NamedQuery. Cette annotation prend deux attributs : name, qui porte le nom de la
requête, et query, qui porte la requête JPQL. Plusieurs annotations @NamedQuery
peuvent être regroupées dans une annotation @NamedQueries, qui prend un tableau de
3 

4 http://docs.oracle.com/cd/E17904_01/apirefs.1111/e13946/ejb3_langref.html
 -
Page 4
@NamedQuery en attribut. Ces deux annotations doivent être posées sur la classe d'une
entiJPA. Exemple : Une requête pour terminer tous les hôtels :
@NamedQuery( name="findAllHotels", query="select c from Hotel c")
- Définir dans la classe du service « HotelFacadeREST.java » les méthodes qui vont
respectivement retourner la liste des hôtels par leur prix et la ville. La méthode de
          hôtel grâce à

EntityManager.createNamedQuery() en lui passant le nom de la requ
dans les annotations. Cette méthode renvoie un objet Query.
Vous allez donc compter le code suivant :
//compléter la méthode HTTP utilisée pour déclencher cette méthode
…………..
//spécifier le type MIME de la réponse du service
…………………………………….
//compléter le chemin
……………..
public List<Hotel> findHotelsByVille(@PathParam("ville") String ville) {
Query query = em.createNamedQuery("compléter par le nom de la requête
nommée");
query.setParameter("ville", ville); // La méthode setParameter()
permet de fournir une valeur à chaque paramètre.
return query.getResultList();
}
o Sauvegarder et tester le service.
4. Développement d’un service REST pour la réservation d’tels
 
    
 -



a) Définition des relations entre les entités
Il faut  ociation entre les deux tables en définissant les annotations
@OnetoMany et ManytoOne.
 -
Page 5
Il faut gérer la cascade en finissant une cascade de type ALL. En effet, on souhaite que
quand on supprime un hôtel, sa servation soit également supprimée.
b) Mapping des entités à XML grâce à JAXB
@XmlRootElement pour chaque classe entité.
@XmlTransient pour chaque les getters.
 
 
a) Création d’une application client pour l’invocation du service Hôtel

             

rer les classes entité à partir de la base de données : NewEntity Classes from
Databases. Vous sélectionnerez la base de dones HotelsBD et ajouterez les tables de la
base de données. Vous nommerez le package « ENTITE ».
       du client. Pour cela, vous allez faire
NewOtherWeb ServicesRestful Java Client. Vous nommerez la classe
« HotelCreateClient » et vous sélectionnerez la ressource REST correspondante. L'API client
de Jersey permet l'interopérabilité avec des web services Rest. Que comporte la nouvelle
classe nérée ?
Ajouter une méthode main dans la classe « HotelCreateClient».
public static void main(String args[])throws UniformInterfaceException
{
HotelCreateClient client=new HotelCreateClient ();
ClientResponse response=client.findAll(ClientResponse.class);
GenericType<List<Hotel>> genericType = new GenericType<List<Hotel>>() {};
// Retourne un tableau d’hôtels à partir du service web
List<Hotel> data= new ArrayList<Hotel>();
data=(response.getEntity(genericType));
Hotel H=new Hotel();
//ajouter les données sur l’hôtel que vous allez insérer
H.setAdresse("…….");
p.setNomhotel("……");
…… ;
client.create(p);

Invoquer les autres opérations du service : recherche de tous les hôtels, recherche des

Invoquer le service de géocodage de google pour terminer les coordones
géographiques de vos hôtels.
Invoquer maintenant le service de servation pour 
s, etc.
Développement du client
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !