SlideShare une entreprise Scribd logo
1  sur  47
Télécharger pour lire hors ligne
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
Tomcat 7 
Présentation avant travaux 
2
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
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
la jconsole 
• Executable « jconsole[.exe] » fournie avec le JDK, 
utilisable avec d’autres applications 
• Voir les erreurs 
dans la console 
linux ou MSDOS 
5
Vue de Tomcat en 
fonctionnemen t 
6
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
Jboss AS 7.1 
Présentation avant travaux 
8
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
Démarrer Jboss en 
standalone 
• JBOSS_HOMEbinstandalone.bat 
• http://localhost:9990/console 
10
Ajouter l’utilisateur 
• Realm vide (par défaut ManagementRealm) 
• Avec la commande "add-user" 
o Rajouter le user admin/jboss 
11
Déployer une application 
1/3 
12
Déployer une application 
2/3 
13
Déployer une application 
3/3 
14
La console 
d’administration 
• $JBOSS/standalone/configuration/standalone.xml 
15
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
Jconsole Jbos s 
17
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
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
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
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
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
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
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
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
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
MLD 
27
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
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
Architecture v1 – 3 tier s 
30
Arborescenc e 
index 
front-­‐‑office 
back-­‐‑office 
création 
commande 
gestion 
pizzas 
gestion 
commande 
31
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
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
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
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
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
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
Créer des projets 
EJB et EAR pour Eclips e 
Menu "New EAR Project", puis sélection des modules 
menu "New EJB Project" : 
38
Gérer les librairies de 
l'ʹEAR dans Eclips e 
39
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
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
Admin Console JBos s 
42
Vue de l'ʹEAR dans JBos s 
43
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
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
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
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

Contenu connexe

Tendances

Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement webHouda TOUKABRI
 
Cours java avance débutant facile l'essentiel swing ,events
Cours java avance débutant facile l'essentiel swing ,events Cours java avance débutant facile l'essentiel swing ,events
Cours java avance débutant facile l'essentiel swing ,events Houssem Hamrouni
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JSAbdoulaye Dieng
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UMLAmir Souissi
 
Python avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielleECAM Brussels Engineering School
 
Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3Abel LIFAEFI MBULA
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux javaInes Ouaz
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java HéritageNadaBenLatifa
 
POO Java Introduction
POO Java IntroductionPOO Java Introduction
POO Java IntroductionMouna Torjmen
 
Android-Tp3: fragments et menus
Android-Tp3: fragments et menusAndroid-Tp3: fragments et menus
Android-Tp3: fragments et menusLilia Sfaxi
 

Tendances (20)

Fascicule de tp atelier développement web
Fascicule de tp atelier développement webFascicule de tp atelier développement web
Fascicule de tp atelier développement web
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Python avancé : Classe et objet
Python avancé : Classe et objetPython avancé : Classe et objet
Python avancé : Classe et objet
 
Cours java avance débutant facile l'essentiel swing ,events
Cours java avance débutant facile l'essentiel swing ,events Cours java avance débutant facile l'essentiel swing ,events
Cours java avance débutant facile l'essentiel swing ,events
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 
diagramme de séquence UML
diagramme de séquence UMLdiagramme de séquence UML
diagramme de séquence UML
 
Python avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementiellePython avancé : Interface graphique et programmation évènementielle
Python avancé : Interface graphique et programmation évènementielle
 
Rapport tp1 j2ee
Rapport tp1 j2eeRapport tp1 j2ee
Rapport tp1 j2ee
 
Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3
 
Support JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVCSupport JEE Spring Inversion de Controle IOC et Spring MVC
Support JEE Spring Inversion de Controle IOC et Spring MVC
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux java
 
Ch 01 poo
Ch 01 pooCh 01 poo
Ch 01 poo
 
Introduction à React
Introduction à ReactIntroduction à React
Introduction à React
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 
Exercice 1 java Héritage
Exercice 1 java HéritageExercice 1 java Héritage
Exercice 1 java Héritage
 
Angular Avancé
Angular AvancéAngular Avancé
Angular Avancé
 
POO Java Introduction
POO Java IntroductionPOO Java Introduction
POO Java Introduction
 
Android-Tp3: fragments et menus
Android-Tp3: fragments et menusAndroid-Tp3: fragments et menus
Android-Tp3: fragments et menus
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 
Support NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDBSupport NodeJS avec TypeScript Express MongoDB
Support NodeJS avec TypeScript Express MongoDB
 

En vedette

Enib cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1Horacio Gonzalez
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)ENSET, Université Hassan II Casablanca
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EEInes Ouaz
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
JCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratiqueJCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratiqueRossi Oddet
 
Bonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la productionBonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la productionCyrille Le Clerc
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVCNathaniel Richand
 
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Saâd Zerhouni
 
Formation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFFormation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFBoubker ABERWAG
 
J2eeintro
J2eeintroJ2eeintro
J2eeintromedbmb
 
Déploiement d'applications Java EE
Déploiement d'applications Java EEDéploiement d'applications Java EE
Déploiement d'applications Java EEjavalabsf
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Sofien Benrhouma
 
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementHoracio Gonzalez
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Horacio Gonzalez
 

En vedette (20)

Enib cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
 
Formation JAVA/J2EE
Formation JAVA/J2EEFormation JAVA/J2EE
Formation JAVA/J2EE
 
Services rest & jersey
Services rest & jerseyServices rest & jersey
Services rest & jersey
 
APACHE HTTP
APACHE HTTPAPACHE HTTP
APACHE HTTP
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
JCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratiqueJCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratique
 
.NET Vs J2EE
.NET Vs J2EE.NET Vs J2EE
.NET Vs J2EE
 
Bonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la productionBonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la production
 
Soutenance PFE 2012
Soutenance PFE 2012Soutenance PFE 2012
Soutenance PFE 2012
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
 
APACHE TOMCAT
APACHE TOMCATAPACHE TOMCAT
APACHE TOMCAT
 
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
Application de gestion des projets en J2EE (Spring-Hibernate) avec architectu...
 
Formation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPFFormation d'architecte logiciel AFCEPF
Formation d'architecte logiciel AFCEPF
 
J2eeintro
J2eeintroJ2eeintro
J2eeintro
 
YaJUG - Spring 3.0
YaJUG - Spring 3.0YaJUG - Spring 3.0
YaJUG - Spring 3.0
 
Déploiement d'applications Java EE
Déploiement d'applications Java EEDéploiement d'applications Java EE
Déploiement d'applications Java EE
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
 
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
 
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !Enib   cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
 

Similaire à Tp java ee.pptx

Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsJulien Wittouck
 
Installation et Configuration ee JDK et de Tomcat
Installation et Configuration ee JDK et de TomcatInstallation et Configuration ee JDK et de Tomcat
Installation et Configuration ee JDK et de TomcatMohamed Ben Bouzid
 
Les containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicienLes containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicienRachid Zarouali
 
Play Framework
Play FrameworkPlay Framework
Play FrameworkArmaklan
 
Nuxeo5 - Installation avec Eclipse
Nuxeo5 - Installation avec EclipseNuxeo5 - Installation avec Eclipse
Nuxeo5 - Installation avec EclipsePASCAL Jean Marie
 
Principes de fonctionnement unix
Principes de fonctionnement unixPrincipes de fonctionnement unix
Principes de fonctionnement unixwebreaker
 
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)hibnico
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linuxKhalid ALLILI
 
I le langage java d'una manière avancée introduction
I  le langage java d'una manière avancée introductionI  le langage java d'una manière avancée introduction
I le langage java d'una manière avancée introductionsabrine_hamdi
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.jsTelecomValley
 
Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3Luc Juggery
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesNoel GUILBERT
 
technologie web - part3
technologie web - part3technologie web - part3
technologie web - part3Benoît Simard
 
Apache flink - prise en main rapide
Apache flink - prise en main rapideApache flink - prise en main rapide
Apache flink - prise en main rapideBilal Baltagi
 
Meetup python-bottle-telosys-2018-lgu-v1.0
Meetup python-bottle-telosys-2018-lgu-v1.0Meetup python-bottle-telosys-2018-lgu-v1.0
Meetup python-bottle-telosys-2018-lgu-v1.0Laurent Guérin
 

Similaire à Tp java ee.pptx (20)

Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
 
Présentation1
Présentation1Présentation1
Présentation1
 
Installation et Configuration ee JDK et de Tomcat
Installation et Configuration ee JDK et de TomcatInstallation et Configuration ee JDK et de Tomcat
Installation et Configuration ee JDK et de Tomcat
 
Les containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicienLes containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicien
 
Play Framework
Play FrameworkPlay Framework
Play Framework
 
Nuxeo5 - Installation avec Eclipse
Nuxeo5 - Installation avec EclipseNuxeo5 - Installation avec Eclipse
Nuxeo5 - Installation avec Eclipse
 
Principes de fonctionnement unix
Principes de fonctionnement unixPrincipes de fonctionnement unix
Principes de fonctionnement unix
 
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
Maven/Ivy vs OSGi (Toulouse Jug 26-05-2011)
 
PostgreSQL sous linux
PostgreSQL sous linuxPostgreSQL sous linux
PostgreSQL sous linux
 
I le langage java d'una manière avancée introduction
I  le langage java d'una manière avancée introductionI  le langage java d'una manière avancée introduction
I le langage java d'una manière avancée introduction
 
Ejb3 1-server-setup fr
Ejb3 1-server-setup frEjb3 1-server-setup fr
Ejb3 1-server-setup fr
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js
 
Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3Autour de Node.js - TechConf#3
Autour de Node.js - TechConf#3
 
Symfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiquesSymfony2: 30 astuces et bonnes pratiques
Symfony2: 30 astuces et bonnes pratiques
 
Jenkins
JenkinsJenkins
Jenkins
 
technologie web - part3
technologie web - part3technologie web - part3
technologie web - part3
 
openFrameworks
openFrameworksopenFrameworks
openFrameworks
 
Apache flink - prise en main rapide
Apache flink - prise en main rapideApache flink - prise en main rapide
Apache flink - prise en main rapide
 
Meetup python-bottle-telosys-2018-lgu-v1.0
Meetup python-bottle-telosys-2018-lgu-v1.0Meetup python-bottle-telosys-2018-lgu-v1.0
Meetup python-bottle-telosys-2018-lgu-v1.0
 
Hello xcode 4 v2
Hello xcode 4 v2Hello xcode 4 v2
Hello xcode 4 v2
 

Tp java ee.pptx

  • 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. Tomcat 7 Présentation avant travaux 2
  • 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. 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. 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. Vue de Tomcat en fonctionnemen t 6
  • 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. Jboss AS 7.1 Présentation avant travaux 8
  • 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. Démarrer Jboss en standalone • JBOSS_HOMEbinstandalone.bat • http://localhost:9990/console 10
  • 11. Ajouter l’utilisateur • Realm vide (par défaut ManagementRealm) • Avec la commande "add-user" o Rajouter le user admin/jboss 11
  • 15. La console d’administration • $JBOSS/standalone/configuration/standalone.xml 15
  • 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
  • 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. 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. 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. 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. 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. 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. 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. 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. 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
  • 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. 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. Architecture v1 – 3 tier s 30
  • 31. Arborescenc e index front-­‐‑office back-­‐‑office création commande gestion pizzas gestion commande 31
  • 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. 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. 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. 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. 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. 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. 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. Gérer les librairies de l'ʹEAR dans Eclips e 39
  • 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. 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
  • 43. Vue de l'ʹEAR dans JBos s 43
  • 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. 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. 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. 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