CSI 3540 - Laboratoire 10

* Objectifs

  - Introduction à la conception de services Web et leurs clients
    (applications et applications Web)

* Exercises

1. Familiarisez-vous avec la compilation et le déploiement d'un
   service Web. Faites quelques tests avec les clients fournis.

   01_motd.jar

2. Vous devez concevoir un service Web permettant d'obtenir le prix
   d'un titre en bourse et aussi l'assignation d'un nouveau prix.

   2.1 Vous devez concevoir ce service.  Il y aura une
       méthode double getPrice(String) et une méthode
       void setPrice(String,double).

       Vous devez concevoir l'implémentation de ce service.  Utilisez,
       par exemple, un tableau associatif afin de sauvegarder les
       valeurs des titres en bourse.

       Suggestion: développez un programme test afin de valider l'implémentation.

   2.2 Produire et déployer le fichier .war.

   > asadmin deploy stock.war

   2.3 Consultez la page du service

3. Vous devez concevoir un client qui permet de lire ou changer le
   prix d'un titre en bourse.

   3.1 Utilisez wsimport afin de générer automatiquement le
       code du client.

   3.2 Concevoir un programme principal pour l'application.  Un appel
       à ( new StockServicee() ).getStockPort() vous donnera une
       référence vers un objet mandataire. (src/client/Main.java)

   3.3 Faites des tests.

4. Vous devez concevoir une application Web (JSPX, par exemple) afin
   de lire ou changer le prix d'un titre en bourse.

   4.1 Répétez les instructions 3.1 et 3.2, dans le répertoire de
       l'application Web.

   4.2 Créez une classe selon le modèle de conception JavaBean.  Elle
       servira d'interface entre JSP et le client du service (revoir
       les notes du cours sur JSP et JavaBean, si nécessaire)
       (src/client/StockBean.java)

   4.3 Concevez tous les fichiers JSP nécessaires pour lire et changer
       les informations.  Voici des captures d'écran pour vous donner
       quelques idées.

       - index.jspx
       - GetPriceForm.jspx
       - GetPrice.jspx
       - SetPriceForm.jspx
       - SetPrice.jspx

   4.4 Visitez la page de l'application.

   localhost:8080/finance

   Yassine vous donnera la solution complète à la fin du laboratoire.

   Tout comme HTTP, les services Web sont sans état. Ainsi, l'example
   ci-dessous ne fonctionnera que partiellement. Les valeurs
   enregistrées à l'aide de setPrice ne seront pas sauvegardées!
   Ainsi, les appels à getPrice retourneront toujours -1, même s'ils
   étaient précédés d'un appel à setPrice.

   Voici quelques idées pour ajouter la notion d'état pour la durée
   d'une session.

   https://metro.dev.java.net/guide/Maintaining_State_in_Web_Services.html

5. Créez un client Java pour accéder à Google Search (optionnel)!