Université sidi Mohamed Ben Abdellah Faculté des sciences techniques Fès Département d’informatique A-U: 2012-2013 Série 2 de TD/TP : WEB SERVICES Master SIR On souhaite créer une application distribuée dont la couche service permet à un client distant de consulter les informations concernant un catalogue de produits en utilisant la technologie de Web Services. Les services qui seront mis à disposition du client sont les suivants : Consulter un produit sachant son code ; Consulter tous les produits Consulter les produits dont le nom contient un mot clé. Consulter le prix moyenne de tous les produits. Dans cette application, on suppose que la couche métier est composée : D’une classe sérialisable Produit, contient 9 methodes getIdProduit, setIdProduit, getNomProduit, setNomProduit, getPrix, setPrix, getPhoto, setPhoto Produit(Long idProduit,String nomProduit, double prix, String photo) d’une classe MetierCatalogueImpl qui permet de créer une liste de produits au moment de l’instanciation (constructeur) et qui offre des méthodes pour consulter tous les produits, consulter les produits dont le nom contient un mot clé (produitsParMotCle) et consulter un produit sachant son code (getProduit) . d’une classe TestMetier pour tester les méthodes de la classe MetierCatalogueImpl. La liste contient 4 produits : Produit IdProduit nom 1 2 3 4 Ordinateur HP Imprimante HP Ordinateur IBM Imprimante Epson 1L 2L 3L 4L Travail demandé : 1. Créer un projet java pour le web service 2. Mettre en place et Tester la couche métier 3. Créer la classe implémentant le web service. 4. Créer le serveur 5. Démarrer le serveur en déployant le projet. 6. Tester le web service avec un client léger. 7. Créer un projet java pour le client 8. Mettre en place le WSDL dans le projet du client 9. Générer les stubs pour le client. 10. Créer et Tester le client java 11. Tester le web service avec un analyseur SOAPUI. 1 Prix moyenne 6400 2300 5600 6400 photo Ord1.jpg Imp1.jpg Ord2.jpg Imp2.jpg Code source de la couche métier : Classe Produit.java Package metier; Import java.io.Serializable; Public class Produit implements Serializable { Private Long idProduit; Private String nomProduit; Private double prix; Private String photo; Public Produit(Long idProduit,String nomProduit, double prix, String photo) { this.idProduit=idProduit; this.nomProduit= nomProduit; this.prix= prix; this.photo= photo; } Public Long getIdProduit() { Return idProduit; } Public void setIdProduit(Long idProduit) { this.idProduit= idProduit; } Public String getNomProduit() { Return nomProduit; } Public void setNomProduit(String nomProduit) { this.nomProduit= nomProduit; } Public double getPrix() { Return prix; } Public void setPrix(double prix) { this.prix= prix; } Public String getPhoto() { Return photo; } Public void setPhoto(String photo) { this.photo= photo; } 2 Classe MetierCatalogueImpl.java Package metier; Import java.util.ArrayList; Import java.util.List; Public class MetierCatalogueImpl { Private List<Produit> produits= new ArrayList<Produit>(); publicMetierCatalogueImpl() { produits.add(new Produit(1L,"Ordinateur HP",6400,"ord1.jpg")); produits.add(new Produit(2L,"Imprimante HP",2300,"imp1.jpg")); produits.add(new Produit(3L,"Ordinateur IBM",5600,"ord2.jpg")); produits.add(new Produit(4L,"Imprimante Epson",6400,"imp2.jpg")); } Public List<Produit> listeProduits() { Return (produits); } Public List<Produit> produitsParMotCle(String mc) {List<Produit> prods=new ArrayList<Produit>(); For (Produit p:produits) { if(p.getNomProduit().indexOf(mc)!=-1) {prods.add(p);} } Return (prods); } Public Produit getProduit(Long idP) { for(Produit p:produits) { if (p.getIdProduit().equals(idP)) Return p;} return(null); } } Classe TestMetier.java Package metier; Import java.util.List; Public class TestMetier { Public static void main(String[] args) { MetierCatalogueImpl metier = new MetierCatalogueImpl(); Produit prod=metier.getProduit(2L); System.out.println("Consulter lr produit dont ID=2"); if(prod!=null) System.out.println(prod.getNomProduit()); System.out.println("Afficher les produits dont le nom contint HP"); List<Produit> prods=metier.produitsParMotCle("HP"); For (Produit p:prods) System.out.println(p.getNomProduit());}} 3