Tp java ee.pptx

1 496 vues

Publié le

TP java JEE BOSS AS 7

Publié dans : Technologie
0 commentaire
3 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 496
Sur SlideShare
0
Issues des intégrations
0
Intégrations
14
Actions
Partages
0
Téléchargements
127
Commentaires
0
J’aime
3
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Tp java ee.pptx

  1. 1. TP JEE Ce document contient les énoncés de TP JEE et des guides techniques pour les serveurs et outils utilisés Tomcat7, Jboss 7, Eclipse Juno Le contenu de ce document est mis à disposition selon les termes de la Licence Creative Commons Attribution - Partage dans les Mêmes Conditions 3.0 France. 1
  2. 2. Tomcat 7 Présentation avant travaux 2
  3. 3. Installation de Tomcat • Décompresser l’archive dans un sous-répertoire o avec les droits en lecture/écriture o sans d’espace ou accents o Configuration « conf/server.xml » • Démarrage / Arrêt o startup.bat (avec java dans le PATH) o shutdown.bat ou CTRL-C • Surveillance o Fichier « logs/catalina.<date>.log » INFO: Doép loJiCemoennsto dlue répertoire C:ProjetsToolsapache-­‐‑tomcat-­‐‑7.0.30webappsmanager de l'ʹapplication web 18 sept. 2012 10:10:50 org.apache.catalina.startup.HostConfig deployDirectory INFO: Déploiement du répertoire C:ProjetsToolsapache-­‐‑tomcat-­‐‑7.0.30webappsROOT de l'ʹapplication web 18 sept. 2012 10:10:50 org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["ʺhUp-­‐‑bio-­‐‑8880"ʺ] 18 sept. 2012 10:10:50 org.apache.coyote.AbstractProtocol start INFO: Starting ProtocolHandler ["ʺajp-­‐‑bio-­‐‑8809"ʺ] 3 18 sept. 2012 10:10:50 org.apache.catalina.startup.Catalina start INFO: Server startup in 14591 ms
  4. 4. Déployer une application • http://localhost:8080/manager/html • User « tomcat », 1 mot de passe « tomcat » • ou répertoire webapps • ce peut être plus complexe 2 $tomcat/conf/tomcat-users.xml <role rolename="ʺmanager-­‐‑gui"ʺ/> <role rolename="ʺadmin-­‐‑gui"ʺ/> <user username="ʺtomcat"ʺ password="ʺtomcat"ʺ roles="ʺtomcat,manager-­‐‑gui,admin-­‐‑gui"ʺ/> 4
  5. 5. la jconsole • Executable « jconsole[.exe] » fournie avec le JDK, utilisable avec d’autres applications • Voir les erreurs dans la console linux ou MSDOS 5
  6. 6. Vue de Tomcat en fonctionnemen t 6
  7. 7. TP 1 : utilisation de Tomcat 7 • Téléchargement de Tomcat 7 32 bits windows • Installation (utiliser jdk.bat, après avoir adapté JAVA_HOME) • Démarrage • Utilisation du manager • Déploiement d’une application web o sur le site du cours dans ressources/exo/hawtio... • Utilisation de la jconsole • Arrêt • Déployer plusieurs applications web o en cas d'erreur mémoire OutOfMemoryError mettre set JAVA_OPTS=-Xms256m -Xmx512m au début de catalina.bat http://mirrors.jenkins-ci.org/war/latest/jenkins.war 7
  8. 8. Jboss AS 7.1 Présentation avant travaux 8
  9. 9. Installer JBoss • Décompresser l’archive dans le sous-répertoire de votre choix où o vous avez les droits en lecture/écriture o Il n’y a pas d’espace ou d’accents dans le chemin complet • Documentation o https://docs.jboss.org/author/display/AS7/Admin+Guide 9
  10. 10. Démarrer Jboss en standalone • JBOSS_HOMEbinstandalone.bat • http://localhost:9990/console 10
  11. 11. Ajouter l’utilisateur • Realm vide (par défaut ManagementRealm) • Avec la commande "add-user" o Rajouter le user admin/jboss 11
  12. 12. Déployer une application 1/3 12
  13. 13. Déployer une application 2/3 13
  14. 14. Déployer une application 3/3 14
  15. 15. La console d’administration • $JBOSS/standalone/configuration/standalone.xml 15
  16. 16. Autres façons d’installer une application JEE • Déposer le fichier war ou ear dans $JBossstandalone deployments o Répertoire scruté périodiquement par le serveur d’application o Faire un déplacement plutôt qu’une copie • Depuis Eclipse • Outil en ligne de commande « jboss-cli » o Mode interactif par défaut o Mode non interactif : ./jboss-cli.sh --file=install-pizzashop.cli • Le script d’installation est préférable pour livrer un logiciel o Pas d’erreur de manipulation humaine o Procédure maitrisée • 16
  17. 17. Jconsole Jbos s 17
  18. 18. Arrêter JBoss Plusieurs choix : 1. fermer la console MSDOS de standalone.bat ou le shell linux de standalone.bat/.sh 2. Utiliser la commande jboss-cli 1. jboss-cli.bat --connect command=:shutdown ou ./jboss-cli.sh --connect command=:shutdown 3. Tuer la tâche associée à jboss sous linux : 1. ps –ef | grep jboss 2. kill xxx 18
  19. 19. TP 2 : utilisation de JBoss AS 7.1 • Installation • Démarrage • Ajouter l'utilisateur admin/jboss • Utilisation de la console d’administration • Déploiement d’une application JEE o les applications sont déployées par défaut sur le port 8080 • Utilisation de la jconsole o faire une connection en "remote process" service:jmx:remoting-jmx://localhost:9999 avec le user créé ci-dessus • Arrêt 19
  20. 20. TP 3 : Servlet • Outils : javac, notepad++, jar • Consignes : o ne pas utiliser d’IDE comme Eclipse o ne pos déclarer de package o Il faudra rajouter %TOMCAT_HOME%libservlet-api.jar dans le CLASSPATH • HelloWorld (voir support de cours pour le code, make_hello.bat fourni) o A déployer dans %TOMCAT_HOME%webappshello • PizzaServlet v1 o A déployer dans %TOMCAT_HOME%webappspizza o Page formulaire : doGet • Code exemple fourni o Page confirmation : doPost • Afficher la commande saisie 20
  21. 21. PizzaServlet v2 • Outils : javac, notepad++, jar • Consignes : o ne pas utiliser d’IDE comme Eclipse o ne pos déclarer de package o Il faudra rajouter %TOMCAT_HOME%libservlet-api.jar dans le CLASSPATH • Modifier l'exemple PizzaServlet fourni pour scinder le fonctionnement en plusieurs pages : o la première page demande le type de pizza et le nombre commandé o la seconde page demande l'adresse de livraison (nom, prenom, detailAdresse, codePostal, ville) et le mode de paiement (carte, à la livraison) o la 3eme page affiche la commande saisie • utilisez les sessions pour conserver les informations entre les pages o n'utiliser qu'une seule servlet pour toute les pages 21
  22. 22. TP 4 : JSP • Outils : notepad++ • Consignes : ne pas utiliser d’IDE comme Eclipse 1. convertir PizzaServlet v2 en 3 pages JSP o Dans un sous-répertoire « mypizza » (autre nom que celui pour PizzaServlet) 2. utiliser les taglibs JSTL o Déployer les JSP dans une autre application web avec les taglibs o Utiliser <jsp:forward> si le nombre de pizza est <0 dans la 2nde page o Saisir une date de livraison à la 2nde page (format "dd/MM/YYYY") o Utiliser <fmt:formatDate> pour afficher la date de livraison à la 3eme page (format "dd/MM/YYYY") 22
  23. 23. Installer Eclips e • Installer Eclipse Juno JEE • Rajouter l’extension JBoss Tools • Déclarer les « Server Runtime » suivants : o Apache 7, server name "Tomcat v7.0 Server at localhost" o JBoss AS 7.1, server name "JBoss 7.1 Runtime 1 Server • Librairie JAR pour les exercices o Recopier le répertoire jar_libs des ressources du cours JEE vers C:jar_libs o Déclarer la variable de CLASSPATH "JAR_LIBS" • Menu Préferences, Java, Build Path, ClassPatch Variables • Faire pointer la variable "JAR_LIBS" vers C:jar_libs 23
  24. 24. Bonnes pratiques Eclips e • C:Eclipsebinaries : pour les versions d’éclipse o Installer eclipse sous C:Eclipsebinarieseclispe_juno_jee • C:Eclipseworkspaces : pour les workspaces • Déclarer le runtime server et sa JVM • Mettre la console en taille illimitée • Désactiver le build automatique 24
  25. 25. Rajouter un jar dans le classpath d'ʹun projet Eclips e Clique droit sur un Projet, menu Properties Utiliser "Add Variable", puis extend pour chercher un jar depuis $JAR_LIBS 25
  26. 26. TP 5 : JDBC + JUn it • Outils : Eclipse, MySQL, phpMyAdmin • Consignes : o Utiliser la base de données fournies (URL : jdbc:mysql://localhost:3306/pizzadb) o Créer vos classes dans le package « fr.jpcarmona.tppizza.persistence » o Tracer les erreurs avec log4j o Implémenter les interfaces DAO pour les classes métier • PizzaDAOImpl • OrderDAOImpl o Faire des Junit de test de chaque méthode • Afficher le toString() résultat EndUser +email +password +nickname +firstname +lastname PizzaOrder +deliveryDateHour +orderDateHour +comment +paymentMean: Enum +paymentRef +pizzas 1..* Pizza +pizzaType: Enum +pizzaName +address 1 Address +addressDetail +postalCode +city PizzaTypes : White Tomato Special +customer 1 0..* PaymentMean: cc cash paypal 26 nb: chaque classe hérite de BizBase
  27. 27. MLD 27
  28. 28. Création de la base dans PhpMyAdmin • Création d'un user pizzadb/pizzadb avec sa base • Puis import du code de pizzadb_export.sql dans l'onglet SQL 28
  29. 29. TP 6 : Webapp "ʺPizzaWar"ʺ • Importer le projet PizzaWar_Debut o Contient le code JDBC de création de commandes et de pizzas • le code n'accepte que la création de commande d'une pizza à la fois o Déclare la DataSource jdbc/PizzaDB dans Tomcat o Déclare la Servlet ...ui.PizzaShopControlerServlet o Les DAO sont créés par la Servlet avec le DataSource Tomcat • Créer la méthode de servlet de création de pizza o URL : pizzashop/createPizza • Créer la page de la liste des pizzas à vendre o page admin/listePizzas.jsp appelée après la création d'une pizza • Afficher la liste des pizzas en vente dans la combox (choice) de pizza1.jsp • depuis index.jsp appeler pizzaShop/displayOrderPage • mettre en session la liste des pizzas et retourner la page pizza1.jsp 29
  30. 30. Architecture v1 – 3 tier s 30
  31. 31. Arborescenc e index front-­‐‑office back-­‐‑office création commande gestion pizzas gestion commande 31
  32. 32. TP 7 : Bootstrap & JQuery • A partir du code de l'archive PizzaWar_debut fournie ou votre travail • Utiliser Bootstrap dans chaque page o Utiliser la commande <jsp:include page="header.jsp"> <jsp:param name="titre" value="page2"/></jsp:include> pour inclure une entête et un pied de page commun à chaque JSP • Utiliser request.getParameter("titre") dans header.jsp o depuis la 1ere page de commande de pizza, appeler pizzas.option.html pour avoir une liste de pizzas dynamique • Modifier le contrôleur pour ajouter un appel à l'API REST pizzas/id o La 3eme page doit afficher le nom de la pizza pas l'id • appel Javascript à http://localhost:8080/PizzaWar/pizzashop/pizzas/<id>.json 32
  33. 33. Architecture v2 -­‐‑ 4 tier s 33 tppizza.biz.Pizza tppizza.biz.PizzaOrder tppizza.biz.Pizza tppizza.biz.PizzaOrder tppizza.biz.Pizza tppizza.biz.PizzaOrder tppizza.ui PizzaShopControlerServet EndUserManager PizzaManager tppizza.service tppizza.persistence EndUserManagerBean PizzaManagerBean EndUserDAO PizzaDAO PizzaOrderDAO DaoBase JSP Vue Controler Model <<Interface>> javax.sql.DataSource JEE Server manage a database connection pool JNDI Connection JNDI Connection WAR ejb-jar.jar JAR
  34. 34. TP8 : EJB • Outils : Eclipse, JBoss avec Jboss Tools • Etapes : o Installer Jboss (TP 2) o Ajouter JBossTools pour pouvoir créer un Server Runtime Jboss 7 • Depuis la servers window, add a server, server wizard, download additional server adapters, add JBoss AS Tools o Déclarer la DataSource PizzaDS dans JBoss (voir pages suivantes) o Importer les projets PizzaEAR, PizzaEJB et PizzaBiz de PizzaEAR_debut.zip o Ne garder que le WebContent et le code java du package ".ui" dans un projet PizzaWar (T2) • Le projet PizzaWar (T2) n'a plus le package "persistence" ni "biz" • Supprimer META-INF/context.xml et le ressource-ref dans WEB-INF/web.xml • Remplacer les accès à la DataSource dans PizzaShopServlet par une connection aux EJB (au lieu des DAO et DataSource) o @EJB(mappedName="java:global/PizzaEAR/PizzaEJB/PizzaManagerBean") o private PizzaManager pizzaManager; o Appeler les EJB depuis la Servlet en utilisant l'annotation @EJB o Completer les méthodes en todo de PizzaManagerBean o Tester l'application PizzaEAR jusqu'à la création d'une commande de Pizza 34
  35. 35. Déclarer une DataSource dans JBoss o Dézipper mysql_jboss_module.zip sous $Jboss/modules o Déclarer la DataSource dans $Jboss/standalone/configuration/standalone.xml <subsystem xmlns="ʺurn:jboss:domain:datasources:1.0"ʺ> <datasources> ... <datasource jndi-­‐‑name="ʺjava:/PizzaDS"ʺ pool-­‐‑name="ʺPizzaDS"ʺ enabled="ʺtrue"ʺ use-­‐‑java-­‐‑ context="ʺtrue"ʺ> <connection-­‐‑url>jdbc:mysql://localhost:3306/pizzadb</connection-­‐‑url> <driver>mysqlDriver</driver> <security> <user-­‐‑name>root</user-­‐‑name> <password></password> </security> </datasource> ... <drivers> .... <driver name="ʺmysqlDriver"ʺ module="ʺcom.mysql"ʺ> <xa-­‐‑datasource-­‐‑class>com.mysql.jdbc.Driver</xa-­‐‑datasource-­‐‑class> </driver> ... 35
  36. 36. Logs de bon démarrag e ... 16:31:15,178 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-7) JNDI bindings for session bean named PizzaManagerBean in deployment unit subdeployment "PizzaEJB.jar" of deployment "PizzaEAR.ear" are as follows: java:global/PizzaEAR/PizzaEJB/PizzaManagerBean!fr.jpcarmona.tppizza.service.PizzaManager java:app/PizzaEJB/PizzaManagerBean!fr.jpcarmona.tppizza.service.PizzaManager java:module/PizzaManagerBean!fr.jpcarmona.tppizza.service.PizzaManager java:jboss/exported/PizzaEAR/PizzaEJB/PizzaManagerBean!fr.jpcarmona.tppizza.service.PizzaManager java:global/PizzaEAR/PizzaEJB/PizzaManagerBean java:app/PizzaEJB/PizzaManagerBean java:module/PizzaManagerBean chemins JNDI possibles ... 16:31:15,964 INFO [org.jboss.web] (MSC service thread 1-4) JBAS018210: Registering web context: /PizzaWar 16:31:16,045 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS018559: Deployed "PizzaEAR.ear" 36 Chemin pour l'ʹURL : hUp://localhost:8080/PizzaWar
  37. 37. Forcer un redéploiemen t En cas de message • Alors : Rajouter un fichier nommé PizzaEAR.ear.dodeploy • dans $Jboss/standalone/deployments 37 6:39:08,388 INFO [org.jboss.as.server.deployment.scanner] (DeploymentScanner-­‐‑threads -­‐‑ 1) JBAS015003: Found PizzaEAR.ear in deployment directory. To trigger deployment create a file called PizzaEAR.ear.dodeploy
  38. 38. Créer des projets EJB et EAR pour Eclips e Menu "New EAR Project", puis sélection des modules menu "New EJB Project" : 38
  39. 39. Gérer les librairies de l'ʹEAR dans Eclips e 39
  40. 40. Configuration d’un Client JNDI Jboss 7 jndi.properties java.naming.factory.url.pkgs=org.jboss.ejb.client.naming jboss-­‐‑ejb-­‐‑client.properties remote.connections=default remote.connection.default.host=127.0.0.1 remote.connection.default.port=4447 remote.connection.default.username=pizzafo remote.connection.default.password=***** endpointremote.connectionprovider.create.options.org.xnio.Options.SS L_ENABLED=false remote.connection.default.connect.options.org.xnio.Options.SASL_PO LICY_NOANONYMOUS=false Code java du client de l'ʹEJB Context ctx = new InitialContext(); ctx.lookup("ʺejb:<EAR>/<EJBModule>//<EJBClassName>!<EJBInterfaceName>"ʺ); 40
  41. 41. Ajouter un utilisateur applicatif JBos s • Depuis la ligne de commande JBoss o cd $JBOSS/bin o ./add-user.sh (puis selectionnez un application user) o Enter the details of the new user to add. o Realm (PizzaApp) : PizzaApp o Username (pizzafo) : pizzafo o Password : ***** o Re-enter Password : ***** o What roles do you want this user to belong to? (Please enter a comma separated list, or leave blank for none) : frontoffice 41
  42. 42. Admin Console JBos s 42
  43. 43. Vue de l'ʹEAR dans JBos s 43
  44. 44. Consulter l'ʹarbre JNDI JBos s • Depuis la ligne de commande JBoss o cd $JBOSS/bin o ./jboss-cli.sh o You are disconnected at the moment. Type 'connect' to connect to the server or 'help' for the list of supported commands. o [disconnected /] connect o [standalone@localhost:9999 /] • Depuis la log Jboss o ... INFO ... JNDI bindings for session bean named ....: • ... • java:global/PizzaEAR/PizzaEJB/PizzaManagerBean • java:app/PizzaEJB/PizzaManagerBean • java:module/PizzaManagerBean 44
  45. 45. TP9 JPA & transaction s • Outils : Eclipse, Hibernate, MySQL o Rajouter le facet JPA au projet PizzaBiz et PizzaEJB o Voir quickref_JPA.pdf et http://docs.oracle.com/javaee/6/api/ • Consignes : écrire en JPA la persistance de PizzaDAO puis de PizzaOrderDAO 1. Mettre les annotations JPA dans toutes les classes métier sauf adresse • Pour simplifier, supprimez la classe BizBase et rajouter l'attribut id partout • Déclarer la classe EndUser en @Entity avec l'adresse en @Transient et y définir l'attribut pizzaOrders comme dans le cours 2. Copier/coller et renommer les classes DAOImpl existantes en DAOJpaImpl • Ignorer le paramètre whereClause pour retourner tous les éléments en base 3. Remplacez le DataSource par un entity manager dans l'EJB • META-INF/persistence.xml doit être dans le projet PizzaEJB 4. Remplacez les appels JDBC par des appels JPA dans les nouveaux DAO 45
  46. 46. TP9'ʹ finalisation PizzaEAR • finir et faire fonctionner le TP jusqu'à la création d'une commande de pizza • mettre le frontoffice.war dans tomcat o création d'un utilisateur dans Jboss o utilisation de l'API o voir le corrigé PizzaEAR avec le junit de l'EJB sous PizzaEJBtest • Optionnel : faire un backoffice.war dans l'EAR avec o La page de liste des commandes o la page de prise en compte d'une commande o la fonction de modification de la liste des pizzas en ¬vente 46
  47. 47. Connexion entre module s PizzaEjb PizzaWar persistence.xml MySQL @EJB(name="ʺPizzaManager"ʺ) @Resource(name="ʺjava:/PizzaDS"ʺ) PersistenceContext(unitName="ʺPizzaPU"ʺ) <datasource jndi-­‐‑name="ʺjava:/PizzaDS"ʺ ... jdbc:mysql://localhost:3306/pizzadb JBoss DataSource <jta-­‐‑data-­‐‑source>java:/PizzaDS</jta-­‐‑data-­‐‑source> standalone.xml PizzaManagerBean.java PizzaShopControlerServlet.java 47

×