Université Pierre et Marie Curie Master Informatique – M2 Cours : Middleware orienté composants (MDOC) Janvier 2006 Examen Middleware orienté composant (MDOC) Partie J2EE Les parties J2EE et Web Services sont à rédiger sur des copies séparées. Documents autorisés. 2 heures. Le barème est donné à titre indicatif. Ce sujet comporte 4 pages. 1 Questions de cours (3 points) Répondre aux questions en justifiant brièvement vos réponses. 1.1 1.2 1.3 Le terme session est employé à la fois pour les JSP et les EJB. Donner les deux définitions. Expliquer la différence entre les valeurs retournées par les méthodes executeQuery et executeUpdate de JDBC. Donner, en une phrase, la différence entre les propriétés transactionnelles SUPPORTS et REQUIRED des EJB. 2 JSP (5 points) Le TP J2EE réalisé dans le cadre du module MDOC comporte une partie présentation graphique qui a été réalisée à l’aide d’une ou de plusieurs JSP. Ces JSP sont capables de répondre à plusieurs commandes (créer un compte, transférer de l’argent, etc.) dont le traitement est codé en dur dans la ou les JSP. Par ailleurs, lorsque plusieurs JSP sont présentes, l’enchaînement des JSP est également codé en dur. Proposer en 2 pages maximum une solution pour séparer les éléments de présentation graphique, de la définition de l’enchaînement des pages et des actions à effectuer. Il s’agit donc de faire en sorte que la définition des traitements à exécuter et des enchaînements de pages JSP ne soient plus codés en dur dans la JSP. Votre solution doit être aussi précise et compréhensible que possible sans rentrer dans tous les détails de programmation. Il s’agit donc d’expliquer en français et avec des schémas et/ou avec des éléments de programmation (classes, interfaces, servlet, fichiers texte, XML, JSP, etc.) comment mettre en œuvre la solution. 1/4 3 EJB (6 points) Cet exercice concerne la définition d’un site de commerce en ligne développé avec des EJB. Le site propose un ensemble d’articles organisés par catégories (livres, DVD, etc.). Les clients peuvent passer des commandes et on souhaite conserver leurs coordonnées et leurs commandes. Chaque commande peut concerner un ou plusieurs articles. Le scenario type d’utilisation du site est le suivant : - consultation des pages présentant les articles ou recherche d’un article - choix d’un ou plusieurs articles - saisie des coordonnées ou identification à l’aide d’un couple login/password attribué lors d’une commande précédente - acceptation de la commande et paiement 3.1 3.2 3.3 3.4 Proposer un ensemble d’EJB pour mettre en œuvre ce site. Pour chaque EJB, préciser, en français, sa nature (session/entité) et les méthodes principales des interfaces Home et Remote. On ne demande pas le code. Proposer, en français, une solution pour gérer le panier des clients, i.e. pour gérer le mécanisme qui permet à un client de sélectionner plusieurs articles avant de saisir ses coordonnées et d’accepter la commande. En fonction des éléments mis en place précédemment, donner le code Java du mécanisme qui permet de calculer le montant d’une commande. Il ne s’agit pas de donner tout le code de l’application, mais seulement la partie nécessaire à ce calcul. On souhaite ajouter au site un mécanisme qui permet de déclencher automatiquement des réapprovisionnements lorsque la quantité d’un article en stock franchit un certain seuil. Décrire, en français, les éléments à mettre en place pour réaliser cela. Partie Web Services À rédiger sur une copie séparée. 4 Questions de cours (3 points) 4.1 Certains Web Services possèdent des binding HTTP POST, HTTP GET, et HTTP SOAP. Quelles sont les différences entre ces binding ? Quels sont les intérêts pour un service web de proposer simultanément plusieurs binding ? 4.2 Lorsqu’un client souhaite utiliser un Web Service, faut-il obligatoirement qu’il possède la description WSDL du service ? Si oui, pourquoi ? Si non, quelles sont les alternatives ? 2/4 5 Exercice (3 points) Soit la description WSDL suivante : La description suivante est donnée par le fournisseur du service : « Uses ImageMagick (http://www.imagemagick.org/) convert program to convert from/to over 90 image formats. » « The image to be converted must be accessible by URL. The output image type is determined by the convert program from the output filename. One option is provided, a boolean true or false that tells the convert program whether to flatten multi-layer images into one file. The service returns the URL of the converted image in zip format, to accommodate the generation of multiple files from multi-layer images. Maximum input image size is 2 MB. » 5.1 Précisez le ou les Services Web décrits dans cette description (en expliquant très précisément les paramètres et leur type). WSDL2Java de Axis permet de générer des classes Java permettant d’invoquer des Web Service. Une de ces classes correspond à la traduction du PortType (avec conversion des types XMLSchema en Java) : 3/4 public interface ICPortType extends java.rmi.Remote { public String imageConvert(String imageInputURL, boolean flatten) throws java.rmi.RemoteException; } 5.2 5.3 5.4 String imageOutputFilename, Expliquez la relation entre cette interface Java et la description WSDL. Qu’aurait-il fallu changer pour avoir dans l’interface Java des paramètres typés par la classe java.net.URL (qui représente une URL) ? Qu’aurait-il fallu changer pour avoir dans l’interface Java des paramètres typés par la classe java.io.InputStream (qui représente un flux en lecture). 4/4