Mise en œuvre de serveurs d application TD n o 4



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

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

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

Mise en œuvre des serveurs d application

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

Introduction à Eclipse

Création d une application JEE

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

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

Eclipse atelier Java

Utiliser le portail d accès distant Pour les personnels de l université LYON1

Tutoriel d installation de Hibernate avec Eclipse

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

Informations sur l utilisation du webmail du CNRS. Webmail du CNRS. Manuel Utilisateur

Le MSMQ. Version 1.0. Pierre-Franck Chauvet

Plateforme de support en ligne. Guide d utilisation

COURS 5 Mettre son site en ligne! Exporter son site avec WordPress Duplicator Installer un logiciel FTP Faire le suivi des visites de son site avec

Web Tier : déploiement de servlets

Créer et partager des fichiers

TP1 : Initiation à Java et Eclipse

Découvrir la messagerie électronique et communiquer entre collègues. Entrer dans le programme Microsoft Outlook Web Access

Le langage C. Séance n 4

Groupe Eyrolles, 2005, ISBN :

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var - E mail : bij@agasc.fr / Tel : CONSIGNE N 1 :

Rapports d activités et financiers par Internet. Manuel Utilisateur

TP Protocoles SMTP et POP3 avec Pratiquer l algorithmique

Manuel BlueFolder ADMINISTRATION

EXA1415 : Annotations

Installation d'une galerie photos Piwigo sous Microsoft Windows.

Comment se connecter au VPN ECE sous vista

Réglages du portail de P&WC

Disque Dur Internet «Découverte» Guide d utilisation du service

Remote Method Invocation (RMI)

Guide pour la configuration d adresse

TUTORIEL RADIUS. I. Qu est-ce que RADIUS? II. Création d un groupe et d utilisateur

Installer Enterprise Miner 5.1 en SAS environnement Windows

Date : juin 2009 AIDE SUR LES CERTIFICATS. Comment sauvegarder et installer son certificat

Les différentes étapes à suivre pour la création d un feuillet

Configuration du serveur Web

Service Informatique et Télématique (SITEL), Emile-Argand 11, 2009 Neuchâtel, Tél ,

TP1 : Initiation à Java et Eclipse

WinTask x64 Le Planificateur de tâches sous Windows 7 64 bits, Windows 8/ bits, Windows 2008 R2 et Windows bits

Manuel d utilisation de l outil collaboratif

SOMMAIRE GUIDE D UTILISATION DU WEBMAIL. vous guide

Services bancaires par Internet aux entreprises. Guide pratique pour : Transfert de fichiers Version

Guide d installation de MySQL

Déploiement d'une application Visual Studio Lightswitch dans Windows Azure.

1 - Se connecter au Cartable en ligne

1. Installation d'un serveur d'application JBoss:

Guide de configuration pour accès au réseau Wifi sécurisé 802.1X

CONTACT EXPRESS 2011 ASPIRATEUR D S

(Fig. 1 :assistant connexion Internet)

Au préalable, nous nous plaçons dans l espace au sein duquel nous allons créer notre raccourci vers l ENTG.

RMI le langage Java XII-1 JMF

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

Compte Rendu d intégration d application


Utiliser le service de messagerie électronique de Google : gmail (1)

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Comment télécharger le formulaire de candidature? Mode d emploi

Sommaire 1 CONFIGURER SA MESSAGERIE 2 2 CONSULTER VOS MAILS SUR INTERNET (WEBMAIL) 7 3 PROBLEMES POSSIBLES 8

PROCEDURE D EXPORT-IMPORT DU CERTIFICAT InVS INTERNET EXPLORER

BONNE NOUVELLE, À PARTIR DE DEMAIN 15 AOÛT 2014, l inscription en ligne sera disponible à partir du site de l ARO.

Projet. But: consultation en temps réel d événements (cours de bourse, trafic d envoi SMS ) sur des téléphones portables. Serveur de diffusion

Guide d utilisateurs Plesk 11 WEBPACK. Guide d utilisateurs

L accès à distance du serveur

Édu-groupe - Version 4.3

TESIAL sprl. Aide pour l installation et la gestion du backup. 27 novembre 2009

Comment utiliser mon compte alumni?

Manuel d installation et d utilisation du logiciel GigaRunner

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

Services bancaires par Internet aux entreprises. Guide pratique pour : Rapports de solde Version

EJBCA PKI Open Source

Procédure d installation des logiciels EBP sous environnement ESU4. Serveur SCRIBE ou Windows

Guide d utilisation 2012

7. Le Service de certification déchiffre le document avec sa clé privée de déchiffrement.

BOSS : Bourses régionale du Sanitaire et du Social GUIDE UTILISATEUR ETUDIANT

BIRT (Business Intelligence and Reporting Tools)

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

Installation de GFI FAXmaker

OCLOUD BACKUP GUIDE DE REFERENCE POUR ANDROID

Paramétrage des navigateurs

Document d accompagnement pour l utilisation du Cartable en ligne Lycée des Métiers Fernand LÉGER 2013/2014

Connexions à un projet CVS via Eclipse en accès local et distant. 15 Mai 2007

< Atelier 1 /> Démarrer une application web

Placez vous au préalable à l endroit voulu dans l arborescence avant de cliquer sur l icône Nouveau Répertoire

GUIDE D UTILISATION DES SERVICES PACKAGES

wxwidgets dans un environnement Microsoft Windows

Alfstore workflow framework Spécification technique

Contrôle Parental Numericable. Guide d installation et d utilisation

INSTALLATION CONFIGURATION D OWNCLOUD. La réponse informatique

Gestion des certificats en Internet Explorer

2 - VMWARE SERVER.doc

Région wallonne Commissariat wallon

Assistance à distance sous Windows

Le Client/Serveur avec Enterprise Miner version 4

Transport Layer Security (TLS) Guide de mise en œuvre. Version: 1.0

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

Installation et configuration du logiciel BauBit

Transcription:

Master IST-IE 2007 08 UE 203d Mise en œuvre de serveurs d application TD n o 4 1 Introduction Dans ce TD, vous implanterez une application cliente, vous étendrez la logique métier sans modifier les clients, et vous ajouterez de la sécurité à votre application. À la fin du TD n oubliez pas de supprimer les fichiers que vous avez mis de le répertoire deploy du serveur d application (voir une commande possible pour cela à la fin de cet énoncé). 2 Application cliente Pour accéder à l application sur le serveur, on peut soit utiliser un navigateur qui accède à la couche web, soit utiliser une application cliente, c est-à-dire un programme spécifique qui va faire des requêtes à l application sur le serveur. Par exemple, un distributeur bancaire automatique ne va pas utiliser la couche web, plus vulnérable, mais une application cliente. Pour faire une application cliente utile, il faudrait écrire une interface graphique. Ceci n est pas le but de ces TDs. On se contera donc d une application qui fonctionnera sans interaction avec l utilisateur. 1. Dans le Project Explorer, cliquez droit sur TD1_votre_login, choisissez New Application Client Project 2. Dans Project Name: indiquez TD1_votre_loginClient 3. Cliquez sur Finish. 4. Dans le Project Explorer, cliquez droit sur TD1_votre_loginClient, choisissez Properties. 5. Cliquez sur Java Build Path, puis sur l onglet Project. Cliquez sur Add. 6. Sélectionnez le projet client associé au conteneur d EJB (normalement TD1_votre_loginEJBClient). Ceci permettra d utiliser les EJB dans l application cliente. Cliquez sur Ok. 7. Cliquez sur Ok. 1

8. À l aide du Project Explorer, ouvrez le fichier Main.java dans TD1_votre_loginClient appclientmodule (default package). 9. Au début du fichier, ajoutez import biblio.*; import java.io.*; import java.util.properties; import java.rmi.remoteexception; import javax.ejb.createexception; import javax.naming.namingexception; Ces classes java seront utilisées par la suite. Vous allez modifier la méthode public static void main(string[] args) qui est celle appelée quand l application est lancée. 10. Tout d abord nous allons indiquer comment accéder au serveur d application. Ceci ce fait à l aide d un fichier de propriétés que nous allons charger. (a) Après // TODO Auto-generated method stub, ajoutez try { Properties p = new Properties(); p.load(new java.io.fileinputstream("biblio.props")); (b) Cliquez droit sur TD1_votre_loginClient, choisissez New File. (c) Dans File Name: indiquez biblio.props, cliquez sur Finish. (d) Utilisez le Project Explorer pour ouvrir le fichier nouvellement créé. (e) Remplissez le avec les lignes suivantes : java.naming.factory.initial=\ org.jboss.security.jndi.jndilogininitialcontextfactory java.naming.provider.url=localhost:1099 java.naming.factory.url.pkgs=org.jboss.naming 11. Revenez dans le fichier Main.java. Ajoutez le code suivant, qui récupère les interfaces distantes maison, crée un livre et un utilisateur puis fait emprunter le livre par l utilisateur, à la suite de ce que vous avez ajouté précédemment. (Remplacez votre nom et votre adresse mail par ce qu il faut.) // Récupération des interfaces maison Utilisateur_votre_loginHome uhome = Utilisateur_votre_loginUtil.getHome(p); Livre_votre_loginHome lhome = Livre_votre_loginUtil.getHome(p); Admin_votre_loginHome ahome = Admin_votre_loginUtil.getHome(p); // Nouvel utilisateur uhome.create("votre nom", "votre adresse mail", "etudiant"); // Nouveau livre Livre_votre_login steppes = lhome.create("le loup des steppes"); 2

// Nouveau bean d administration Admin_votre_login admin = ahome.create(); // Emprunt admin.emprunte("votre nom", steppes.getcote()); System.out.println("Le livre " + steppes.gettitre() + " est emprunte par " + steppes.getemprunteur() + "."); 12. Entrez à la suite le suivant qui permet de récupérer les différentes exceptions (erreurs) qui pourrait intervenir lors du programme : } catch (RemoteException e) { System.err.println("Problème de connexion :"); } catch (IOException e) { System.err.println("Impossible de trouver le fichier de propriétés :"); } catch (NamingException e) { System.err.println("Impossible de se connecter à l application :"); } catch (CreateException e) { System.err.println("Problème de création des beans :"); } catch (Exception e) { System.err.println("Impossible d emprunter le livre :"); } 13. Dans le Project Explorer, cliquez droit sur Main.java, choisissez Run as Java application. L onglet console passe devant et affiche ce que le programme sort. Vérifiez l absence de message d erreur (écrit en rouge). 3 Modification de la logique métier Vous allez maintenant modifier la logique métier pour envoyer un mail à l utilisateur quand il emprunte un livre, en lui indiquant la date de retour. Ceci doit se faire sans que l on ait à modifier la couche web ni les applications clientes. Tout d abord vous allez créer un bean contrôlé par message dont le rôle sera d envoyer le mail en question, de façon asynchrone pour ne pas surcharger le reste de l application. 1. Cliquez droit sur TD1_votre_loginEJB. 2. Choisissez New XDoclet Enterprise JavaBean. 3. Cochez Message Driven Bean. Cliquez sur Next. 4. Dans Java package, indiquez biblio 3

5. Dans Classe name, indiquez Confirmevotre_loginBean. Cliquez sur Next. 6. Cliquez sur Finish. Le nouveau bean se trouve alors dans le Project Explorer à gauche à la position TD1_votre_loginEJB ejbmodule biblio Confirme_votre_loginBean.java. Doublecliquez dessus pour l ouvrir. 7. Remplacez * destination-jndi-name="confime_votre_login" par : * destination-jndi-name="queue/confirme_votre_login" * connection-factory-jndi-name="java:/jmsxa" * * @jboss.destination-jndi-name name="confirme_votre_login" 8. Il faut maintenant implanter la méthode onmessage qui doit envoyer le mail. Après public void onmessage(javax.jms.message message) { // begin-user-code entrez le code suivant : // vérification du type de message if (message instanceof MapMessage) { MapMessage msg = (MapMessage) message; try { // création d une session d envoi de mail Context initial = new InitialContext(); Session session = (Session) initial.lookup("java:/mail"); // création d un nouveau mail Message mail = new MimeMessage(session); // Expéditeur par défaut mail.setfrom(); // Destinataire mail.setrecipients(message.recipienttype.to, InternetAddress.parse(msg.getString("adresse"),false)); String titre = msg.getstring("titre"); // Sujet mail.setsubject("emprunt de " + titre); // Contenu String contenu = "Bonjour " + msg.getstring("nom") + ",\n\n" + "Ceci est un mail pour confirmer que vous avez emprunté\n" + "le livre intitulé " + titre + ".\n" + "La date de retour est le " + msg.getstring("date") + ".\n\n" + "Cordialement.\n-- \nla bibliothèque imaginaire\n"; mail.settext(contenu); 4

mail.setheader("x-mailer", "JBossAS"); mail.setsentdate(new Date()); // Envoi du mail Transport.send(mail); System.out.println("Mail envoyé."); // Gestion des erreurs } catch (Exception e) { System.err.println("Problème avec le message :\n" + e); } } else { System.err.println("Type de message non reconnu"); } Il faut maintenant faire appel au bean contrôlé par message dans la méthode emprunte du bean Admin_votre_loginBean 9. Retournez dans le fichier Admin_votre_login.java, créé lors du TD n o 3. 10. Dans la méthode emprunte, ajoutez à la suite de l.setemprunteur(u); le code suivant : // Connexion à la file liée au bean contrôlé par message Queue q = Confirme_votre_loginUtil.getQueue(); QueueConnection qc = Confirme_votre_loginUtil.getQueueConnection(); QueueSession qs = qc.createqueuesession(false, Session.AUTO_ACKNOWLEDGE); QueueSender sender = qs.createsender(q); // Création d un message MapMessage msg = qs.createmapmessage(); msg.setstring("adresse", u.getadresse()); msg.setstring("titre", l.gettitre()); msg.setstring("date", l.getretour().tolocalestring()); msg.setstring("nom", u.getnom()); // Envoi du message sender.send(msg); qs.close(); 11. Ajoutez import javax.jms.*; après package biblio; en début de fichier. 12. Sauvegardez tout, compilez deux fois, publiez sur le serveur. Lancez l application cliente pour tester (cliquez droit sur Main.java, choisissez Run as Java application). Si tout va bien, vous devriez recevoir un mail vous informant de votre emprunt. 4 Ajout de sécurité Pour l instant, n importe qui peut accède au serveur d application et le modifier. Nous allons introduire deux niveaux de sécurité, administrateur et usager. Le premier sera autorisé à créer des livres et des utilisateurs, tandis que le second pourra uniquement consulter les livres empruntés. 5

1. Dans Utilisateurvotre_loginBean.java, ajoutez au-dessus de public java.lang.string ejbcreate(string nom, String adresse, String statut) juste avant * <!-- end-xdoclet-definition --> le code suivant : * * @ejb.permission role-name="administrateur" 2. À l aide du Project Explorer, cliquez droit sur META-INF dans TD1_votre_loginEJB ejbmodule. Choisissez New File. 3. Nommer le fichier jboss-security.xml 4. Entrez le contenu suivant dedans : <security-domain>java:/jaas/securite</security-domain> 5. Sauvegardez, compilez deux fois, publiez. 6. Allez dans firefox à l adresse http://localhost:8080/td1_votre_loginweb. et cliquez sur le bouton d initialisation. Quel message d erreur s affiche-t-il? 7. Lancez l application cliente. Quel message d erreur s affiche-t-il? Il faut maintenant créer deux fichier qui contiendront l ensemble des utilisateurs de l application, leur mot de passe et leurs rôles. 8. Dans le Project explorer, cliquez droit sur ejbmodule, faites New Other. 9. Choisissez General File. Cliquez sur Next. 10. Dans File name: entrez users.properties. Cliquez sur Finish. 11. Entrez le texte suivant, qui indique le nom des utilisateurs avec leur mot de passe : Riri=coincoin Fifi=quackquack Loulou=quakquak 12. Créez de la même façon un fichier roles.properties avec le contenu suivant : Riri=administrateur,usager Fifi=usager Loulou=administrateur 13. Sauvegardez, compilez deux fois, publiez. L application cliente et la couche web doivent s authentifier pour accéder aux ressources. 14. Rajouter le code suivant dans le fichier biblio.props de l application cliente, pour s authentifier en tant que Riri : java.naming.security.principal=riri java.naming.security.credentials=coincoin 6

15. Testez à nouveau l application cliente. Vous devriez recevoir un mail. 16. À l aide du Project Explorer, ouvrez le fichier web.xml dans TD1_votre_loginWeb WebContent WEB-INF. 17. Ajoutez le texte suivant à la suite de </welcome-file-list> : <security-constraint> <web-resource-collection> <web-resource-name>initialisation</web-resource-name> <url-pattern>/init.jsp</url-pattern> </web-resource-collection> <auth-constraint> <role-name>administrateur</role-name> </auth-constraint> </security-constraint> <security-constraint> <web-resource-collection> <web-resource-name>accueil</web-resource-name> <url-pattern>/index.jsp</url-pattern> </web-resource-collection> <auth-constraint> <role-name>usager</role-name> </auth-constraint> </security-constraint> <security-role> <role-name>usager</role-name> </security-role> <security-role> <role-name>administrateur</role-name> </security-role> <login-config> <auth-method>basic</auth-method> </login-config> 18. Créez un fichier jboss-web.xml dans WEB-INF. 19. Remplissez-le avec la ligne suivante : <security-domain>java:/jaas/securite</security-domain> 20. Sauvegardez, compilez deux fois, publiez. 21. Dans firefox, allez sur la page http://localhost:8080/td1_votre_loginweb/. On vous demande de vous authentifier. Connectez-vous en tant que Loulou (mot de passe quakquak). Pourquoi une page d erreur s affiche-t-elle? (Remarque : Loulou peut néanmoins accéder à la page d initialisation directement en allant à l adresse http://localhost:8080/td1_votre_loginweb/init.jsp) 7

22. Quittez firefox, et redémarrez-le. Allez sur la page http://localhost:8080/ TD1_votre_loginWeb/ et connectez-vous en tant que Riri (mot de passe coincoin). Vérifiez que vous pouvez accéder à toutes les requêtes (Riri est à la fois administrateur et usager). L interface pour se connecter n est pas personnalisée, il s agit du mécanisme d authentification basique de HTTP. Vous allez améliorer cela. 23. Dans web.xml, changez <auth-method>basic</auth-method> en <auth-method>form</auth-method> <form-login-config> <form-login-page>/login.jsp</form-login-page> <form-error-page>/error.jsp</form-error-page> </form-login-config> 24. Créer un nouveau fichier JSP nommé login.jsp dont le contenu de <body> sera : <%@ include file="entete.jspf" %> <h2>authentifiez-vous</h2> <form method="post" action="j_security_check"> <p>nom : <input type="text" name="j_username"/></p> <p>mot de passe : <input type="password" name="j_password"/></p> <button>connexion</button> </form> <%@ include file="pieddepage.jspf" %> 25. Vous pouvez éventuellement aussi créer un fichier JSP error.jsp qui indiquera que l authentification a échoué. 26. Sauvegardez tout, compilez deux fois, publiez. Vérifiez le bon fonctionnement dans firefox. 27. S il vous reste du temps, rajoutez les annotations XDoclets du type * @ejb.permission role-name="administrateur" ou * @ejb.permission role-name="usager" de façon adéquate pour toutes les méthodes des EJB Livre_votre_login, Utilisateur_votre_login et Admin_votre_login. 5 Suppression des fichiers sur le serveur À la fin du TD, n oubliez pas d enlever les fichiers que vous avez mis sur le serveur d application (ils comptent dans votre quota). Pour cela, le plus simple est d utiliser la commande suivante : find /home_pc/burel/jboss-4.2.2.ga/server/default/deploy/ \ -user $(id --user) -ok rm {} ; en répondant y aux questions posées. 8