L'objectif du TP est de: mettre en pratique un exemple simple de service Web, de programmer un service Web calculatrice, et son client.



Documents pareils
SOAP Concepts Application à Glassfish

Création d un service web avec NetBeans 5.5 et SJAS 9

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Création d une application JEE

TP WEBSERVICES. 1 Pré-requis. 1.1 L environnement de développement. 1.2 Les librairies nécessaires 1.3 SOAPUI

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

Traitement de données

BPEL Orchestration de Web Services

Remote Method Invocation Les classes implémentant Serializable

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

TP1. Outils Java Eléments de correction

Approche Contract First

Manuel d implémentation des Web Services Sous Axis1 et Axis2/Tomcat/linux. Par Pr Bouabid EL OUAHIDI

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

Remote Method Invocation (RMI)

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

La base de données XML exist. A. Belaïd

Compte Rendu d intégration d application

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Quick Start Installation de MDweb version 2.3

Plan du cours. Historique du langage Nouveautés de Java 7

Utiliser Java sans BlueJ

Tutoriel d installation de Hibernate avec Eclipse

RMI le langage Java XII-1 JMF

TP1 : Initiation à Java et Eclipse

Bases Java - Eclipse / Netbeans

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Chapitre I Notions de base et outils de travail

Java DataBaseConnectivity

Cours 1: Java et les objets

Introduction aux «Services Web»

Web Tier : déploiement de servlets

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Glassfish dans le milieu médical. Sun Aquarium Paris 26 Juin 2009 Jacky Renno

Java au cœur de la base de données Oracle

Calcul Parallèle. Cours 5 - JAVA RMI

arcopole Studio Version 3.3

Installation de SQL Server Reporting Services avec l intégration dans un site Windows SharePoint Services V3

Microsoft Technopoche

TP Programmation Java / JDBC / Oracle

Installation et prise en main

Programmation Mobile Android Master CCI

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Programmation par les Objets en Java

Java Licence Professionnelle CISII,

Architecture Orientée Service, JSON et API REST

Programmation Orientée Objet

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Java Licence professionnelle CISII,

Intégration d'applications à "gros grain" Unité d'intégration : le "service" (interface + contrat)

Intergiciel - concepts de base

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Auto-évaluation Programmation en Java

Initiation à JAVA et à la programmation objet.

Installer et configurer Oracle Forms 11gR2 Windows 7 64 bits

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

TP, première séquence d exercices.

Projet De Stijl Plate-forme pour robots mobiles

Editer un script de configuration automatique du proxy

Tutoriel BlueJ. Michael Kölling Mærsk Institute University of Southern Denmark. Version 1.4 fr-2 par le groupe Sigma 1 pour BlueJ Version 1.2.

Guide d installation JMap 5.0

Applet pour visualiser les variables «automate» notifiées

Langage Java. Classe de première SI

Programmer en JAVA. par Tama

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Flux de données Lecture/Ecriture Fichiers

Synchro et Threads Java TM

Programmation Web Avancée Introduction aux services Web

Module d anonymisation

Utilisation de Jakarta Tomcat

EXA1415 : Annotations

4. SERVICES WEB REST 46

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Powershell. Sommaire. 1) Étude du cahier des charges 2) Veille technologique 3) Administration sur site 4) Automatisation des tâches d administration

Préparation d un serveur Apache pour Zend Framework

Introduction à Eclipse

Programmation Réseau. Sécurité Java. UFR Informatique jeudi 4 avril 13

Eclipse atelier Java

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Manuel Utilisateur MISE A JOUR DU CLIENT SOFIE VERS LA VERSION 5. v0.99

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Environnements de développement (intégrés)

Corrigé des exercices sur les références

TP1 : Initiation à Java et Eclipse

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Tp 1 correction. Structures de données (IF2)

Environnements de développement (intégrés)

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

Un ordonnanceur stupide

Hébergement et configuration de services WCF. Version 1.0

Table des Matières. Qu'est ce qu'un service Web

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

Notes de version de Sun Java System Application Server Enterprise Edition

Transcription:

MASTER SSR - SERVICES WEB! Version 2011 L'objectif du TP est de: mettre en pratique un exemple simple de service Web, de programmer un service Web calculatrice, et son client. Introduction Nous proposons de mettre en pratique le cours dédié aux services Web par le biais d une séance qui consiste à programmer et implanter des services Web simples. Pour cela, les outils nécessaires sont les suivants: JDK 1.6 ou supérieur Glassfish 3 Metro Installation de NetBeans + Glassfish Téléchargement Téléchargez NetBeans 7.0 à l URL suivant: http://netbeans.org/ Choisissez le pack Java ou All. Installation Pour installer NetBeans, suivez les instructions. Environnement, lancement et test Il faut dans l onglet Services démarrer le serveur Glassfish. Pour tester si le serveur est bien lancé, ouvrez un navigateur, et testez l URL suivant: http://localhost:8080/ Installation de Metro Pour mettre en pratique les services Web, nous allons utiliser Metro. Normalement, la distribution Metro est incluse dans NetBeans. Si ce n est pas le cas, vous pouvez télécharger l archive à l URL suivant: https://metro.dev.java.net/ Une fois que vous avez téléchargé l archive, désarchivez le fichier en utilisant la commande suivante: java -jar metro-2_0.jar Il faut ensuite installer Metro. Il faut que Glassfish soit arrêté.! asadmin stop-domain domain1! ant -Das.home=chemin/vers/glassfish!!!! -f chemin/vers/metro/metro-on-glassfish.xml install! setenv AS_HOME chemin/vers/glassfish! setenv METRO_HOME chemin/vers/metro! asadmin start-domain domain1 Écrire un service Web Créez le fichier Java HelloService.java suivant. Pour que cette classe devienne un service Web, il faut ajouter une annotation qui permette de promouvoir les méthodes de la classe HelloService comme des opérations du service.

package master.hello; import javax.jws.webservice; @WebService public class HelloService {! public String affichehello(string nom) {!! return "Hello " + nom;! Déploiement du service Nous allons maintenant déployer le service dans Glassfish. Pour cela, utilisez l option Deploy de NetBeans. Une fois cette action effectuée, votre service est accessible à partir de Glassfish. Création d un client pour accéder au service Nous allons maintenant créer un client capable de discuter avec le service Web, en utilisant le protocole SOAP. On crée le fichier Java HelloClient.java: package master.helloclient; public class HelloClient { public static void main(string[] args) { try {!! HelloService port =!!!! new HelloServiceService().getHelloServicePort(); String resappelservice = port.affichehello(args[0]); System.out.println("Le resultat est: "+ resappelservice); catch (Exception ex) { System.out.println ("Exception: " + ex); Le client récupère le port sur lequel est disponible le service, puis lance l appel. Pour que cet appel puisse être exécuté, il faut au préalable donner au client la possibilité de contacter le service Web. Cela est expliqué dans la section suivante. Qu est-ce qui s est passé? Regardons la mécanique qui a été mise en place lors du déploiement du service et du client. Dans le répertoire Generated Sources (jax-ws), on remarque que six classes ont été créées: AfficheHello.java! AfficheHelloResponse.java! HelloService.java! HelloServiceService.java! ObjectFactory.java! package-info.java Ces classes ont été générées lors de la recherche du service, grâce à la présence du fichier WSDL. Elles permettent de gérer le message envoyé par le client, et la réponse du service.

Le fichier HelloServiceService.java est le plus intéressant. C est ce fichier qui fait le lien entre l appel du service dans le client, et l instance du service dans Glassfish. À partir du code du service, et du code du client, JAX-WS a généré des méthodes qui permettent au client d appeler le service simplement, et sans avoir à préciser l URL, le port et les opérations WSDL supportées par le service. Tout cela est fait automatiquement. Si on regarde le WSDL généré pour notre service, on se rend compte que l appel à la méthode Java affichehello() a été transformée dans son équivalent WSDL. Examinons le code WSDL. Le service est disponible à l URL http://localhost:8080/master/helloservice: <service name="helloserviceservice"> <port name="helloserviceport" binding="tns:helloserviceportbinding"> <soap:address location="http://localhost:8080/master/helloservice" />! </port> </service> Le binding décrit le format des messages et le protocole pour pouvoir communiquer avec le service. Ici, on utilise le protocole SOAP et le style document (on envoie juste les données). <binding name="helloserviceportbinding" type="tns:helloservice">! <soap:binding transport=" " style="document" />! <operation name="affichehello">!! <soap:operation soapaction="" />!! <input>!!! <soap:body use="literal" />!! </input>!! <output>!!! <soap:body use="literal" />!! </output>! </operation> </binding> Le porttype décrit le service en termes d opérations et de messages. Le service HelloService possède une opération, l opération affichehello, et deux messages: affichehello en input, affichehelloresponse en output. C est cet élément qui fait le lien avec la classe Java. <porttype name="helloservice">! <operation name="affichehello">!! <input message="tns:affichehello" />!! <output message="tns:affichehelloresponse" />! </operation> </porttype> Les messages faisant partie de l opération sont détaillés: paramètres, type des paramètres éventuellement (types complexes). <message name="affichehello"> <part name="parameters" element="tns:affichehello" /> </message> <message name="affichehelloresponse"> <part name="parameters" element="tns:affichehelloresponse" /> </message> SOAP Monitor Nous allons maintenant voir ce qui se passe lorsque le client appelle le service Web. Pour cela, on utilise un moniteur qui permet d intercepter les messages SOAP échangés entre le client et le service. Le moniteur va donc devenir un intermédiaire entre le client et le service. Pour pouvoir analyser les échanges de messages, il faut au préalable modifier le port sur lequel le client va envoyer les messages SOAP. Par défaut, le port utilisé est le port 8080 (celui de Glassfish). Pour que le message transite par le moniteur, on va désormais envoyer les messages SOAP sur le port 4040 (le port sur lequel le moniteur écoute). On modifie ainsi le client en rajoutant les instructions qui permettent d envoyer le message sur le port 4040. On obtient le code suivant:

package master.helloclient; import javax.xml.ws.bindingprovider; public class HelloClient { public static void main(string[] args) { try { HelloService port =!!! new HelloServiceService().getHelloServicePort(); // Modification du port: 4040 au lieu de 8080 BindingProvider bp = (BindingProvider) port; String addresse =!!! (String)bp.getRequestContext().!!!! get(bindingprovider.endpoint_address_property); addresse = addresse.replacefirst("8080", "4040"); bp.getrequestcontext().put(!!! BindingProvider.ENDPOINT_ADDRESS_PROPERTY, addresse); String resappelservice = port.affichehello(args[0]); System.out.println("Le resultat est: "+ resappelservice); catch (Exception ex) { System.out.println ("Exception: " + ex); On recompile client: ant client On va ensuite lancer le moniteur. Sur le site du cours, vous trouverez l archive contenant les exécutables. Suivant que l on utilise Unix ou Windows, on lancera dans le répertoire bin le script wsmonitor.sh ou wsmonitor.bat. Enfin, on ré-exécute le client: java master.helloclient.helloclient Olivier Et on obtient les informations sur les échanges de messages entre le client et le service dans le moniteur.

Exercice 2 En suivant le modèle précédent, écrire un service Web qui permette de simuler une calculatrice 2 opérations (addition, soustraction) sur les entiers. Déployez le service. Écrire ensuite le client qui appelle le service Calculatrice grâce au protocole SOAP. Exercice 3 En suivant le modèle précédent, écrire un service Web qui permette de simuler un service Web qui permet de traduire des mots du français vers l anglais. Déployez le service. Écrire ensuite le client qui appelle le service Traducteur grâce au protocole SOAP.