La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

JEE Approfondi Chamilah Ingar - Guillaume Monteil - Cyril Tovena.

Présentations similaires


Présentation au sujet: "JEE Approfondi Chamilah Ingar - Guillaume Monteil - Cyril Tovena."— Transcription de la présentation:

1 JEE Approfondi Chamilah Ingar - Guillaume Monteil - Cyril Tovena

2 I- Makumba a) Introduction b) Installation c) Exemple d) Test II- XMLBeans a) Introduction b) Installation c) Exemple d) Test Chamilah Ingar - Guillaume Monteil - Cyril Tovena

3

4 Conception en 2001 par une association détudiants Basé sur le design pattern MVC Librairie de tags JSP => facilite linteraction entre lapplication et la BDD associée Chamilah Ingar - Guillaume Monteil - Cyril Tovena

5 Outils nécessaires : Makumba ! Un conteneur de servlets JEE Un serveur SQL Un driver JDBC ANTLR : Another Tool for Language Recognition ANTLR : Another Tool for Language Recognition Chamilah Ingar - Guillaume Monteil - Cyril Tovena

6 Arborescence du projet File > New > Dynamic Web Projet Chamilah Ingar - Guillaume Monteil - Cyril Tovena monProjet/ WEB-INF/ lib/ classes/ web.xml

7 Ajout des librairies (sous Eclipse) Clic droit sur le projet > Build Path > Configure Build Path > Onglet Librairies > Add External JARs makumba.jar antlr-?.?.?.jar mysql-connector-java-?.?.?-bin.jar Chamilah Ingar - Guillaume Monteil - Cyril Tovena

8 Configuration du web.xml Le fichier est déjà fait si on utilise Tomcat : Aller sur : install.html install.html Récupérer le web.xml dans la partie « Deployment Descriptor » Chamilah Ingar - Guillaume Monteil - Cyril Tovena

9 Fichiers de configuration BDD (1/2) monProjet/WEB-INF/classes/localhost_mysql_maBDD.properties Clic droit sur le dossier classes > New > File Chamilah Ingar - Guillaume Monteil - Cyril Tovena # Nom dutilisateur pour se connecter à la BDD sql.user=root # Mot de passe sql.password= # Autoriser Makumba à modifier la BDD alter#=true maBDD est le nom de la base de données

10 Fichiers de configuration BDD (2/2) monProjet/WEB-INF/classes/MakumbaDatabase.properties Clic droit sur le dossier classes > New > File Chamilah Ingar - Guillaume Monteil - Cyril Tovena #Base de données par défaut default=localhost_mysql_monProjet

11 Définition des données monProjet/WEB-INF/classes/dataDefinitions/*.mdd Créer un dossier nommé « dataDefinitions » dans le dossier « classes » Créer un fichier nomTable.mdd par table existante Chamilah Ingar - Guillaume Monteil - Cyril Tovena # Personne.mdd # Fichier de description pour la table Personne nom=not null char[32] ; age=not null int ;

12 Application monProjet/WEB-INF/index.jsp Clic droit sur monProjet > New > JSP > index.jsp Chamilah Ingar - Guillaume Monteil - Cyril Tovena, Les balises « mak » permettent dagir sur la BDD et dy récupérer des données.

13 Après linstallation on lance la jsp et on obtient une erreur de lancement du serveur Tomcat : Chamilah Ingar - Guillaume Monteil - Cyril Tovena java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) Caused by: java.lang.SecurityException: La servlet de classe org.apache.catalina.servlets.InvokerServlet est privil�gi�e (privileged) et ne peut �tre charg� par cette application web at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1145) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4371) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:516) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:578)... 6 more

14 La configuration de Tomcat ne convient pas à Makumba ! Dans le répertoire dinstallation de tomcat, trouver le fichier context.xml dans le répertoire conf Ajouter lattribut « privileged=¨true¨ » à la balise Chamilah Ingar - Guillaume Monteil - Cyril Tovena

15 On supprime la configuration de tomcat sous Eclipse et on relance la page jsp. On obtient cette fois : org.makumba.commons.RuntimeWrappedException: java.lang.NoClassDefFoundError: ch/ubique/inieditor/IniEditor

16 Chamilah Ingar - Guillaume Monteil - Cyril Tovena En fait il manque toutes les autres librairies extérieures On peut les trouver dans la version sources de makumba et il faut les ajouter toutes sauf « jsp-api.jar » car Tomcat inclut déjà cette librairie dans la version 6

17 Chamilah Ingar - Guillaume Monteil - Cyril Tovena Ca fonctionne enfin ! Une table person_ est créée. Si on insère des champs il seront listés par la JSP.

18 Chamilah Ingar - Guillaume Monteil - Cyril Tovena Structure de la table auto créée

19 Chamilah Ingar - Guillaume Monteil - Cyril Tovena Un autre exemple

20 Chamilah Ingar - Guillaume Monteil - Cyril Tovena

21 Chamilah Ingar - Guillaume Monteil - Cyril Tovena

22 Conception en 2003 par Apache Permet le databinding Java/XML Travail à partir des schémas XSD Chamilah Ingar - Guillaume Monteil - Cyril Tovena

23 Outils nécessaires JDK (minimum 1.4) ANT Saxon XSLT et XQuery XMLBeans Chamilah Ingar - Guillaume Monteil - Cyril Tovena

24 Variables denvironnement – Windows (1/3) (après avoir téléchargé et dézippé XMLBeans) Chamilah Ingar - Guillaume Monteil - Cyril Tovena

25 Variables denvironnement – Windows (2/3) (après avoir téléchargé et dézippé XMLBeans) Chamilah Ingar - Guillaume Monteil - Cyril Tovena

26 Variables denvironnement – Windows (3/3) (après avoir téléchargé et dézippé XMLBeans) Chamilah Ingar - Guillaume Monteil - Cyril Tovena Pour la V2 de XMLBeans, il faut également ajouter jsr173_1.0_api.jar

27 Variables denvironnement – Linux (après avoir téléchargé et dézippé XMLBeans) export XMLBEANS_HOME = « chemin » export PATH=$PATH:$XMLBEANS_HOME/bin export CLASSPATH=$XMLBEANS_HOME/lib/xbean.j ar:$CLASSPATH For XMLBeans V2, export CLASSPATH=$CLASSPATH:$XMLBEANS_H OME/lib/jsr173[_1.0]_api.jar Chamilah Ingar - Guillaume Monteil - Cyril Tovena

28 Ajout des librairies au projet (Eclipse) Toutes les librairies se trouvant dans le répertoire lib du dossier xmlbeans sauf xmlpublic.jar Pour une compatibilité XPath/XQuery, ajouter les librairies de saxon. Les librairies obtenues après génération des classes (cf slide suivant). Chamilah Ingar - Guillaume Monteil - Cyril Tovena

29 Génération des classes : 1 ère méthode Elle se fait à partir dun schéma XSD Création dune tâche ANT (build.xml) : Chamilah Ingar - Guillaume Monteil - Cyril Tovena Larchive mesSchemas.jar est à placer dans le build path du projet.

30 Génération des classes : 2 ème méthode Elle se fait à partir dun schéma XSD Utilisation de la commande SCOMP Chamilah Ingar - Guillaume Monteil - Cyril Tovena test.jar : version compilée à ajouter aux librairies du projet src contient les classes Java non compilées

31 Si vous utilisez XMLBeans avec Eclipse et Apache Tomcat, et que vous obtenez lerreur : ExceptionClassNotFound « Impossible de compiler la page », il faut faire : Clic droit sur le projet > Propriétés > Java EE Module Dependencies Chamilah Ingar - Guillaume Monteil - Cyril Tovena Problème avec Eclipse Il faut cocher toutes les cases.

32 Génération dun fichier XML Chamilah Ingar - Guillaume Monteil - Cyril Tovena // import des classes Java générées précédemment public class GenerationXML { public static void main(String[] args) throws IOException{ ParcautomobileDocument parc = ParcautomobileDocument.Factory.newInstance(); Parcautomobile parcautomobile = parc.addNewParcautomobile(); Vehicule vehicule1 = parcautomobile.addNewVehicule(); vehicule1.setModele(Modele.COUPE); Marque marque1 = vehicule1.addNewMarque(); marque1.setNom(Nom.RENAULT); boolean estValide = parc.validate(); XmlOptions opts = new XmlOptions(); opts.setSavePrettyPrint(); System.out.println(parc.xmlText(opts)); parc.save(new File ("d:/parcAuto.xml"), opts); } Renault

33 Parsing dun fichier XML Chamilah Ingar - Guillaume Monteil - Cyril Tovena // import des classes Java générées précédemment public class ParseXML { public static void main(String[] args) throws Exception { //Parsing du fichier XML ParcautomobileDocument Parcautomobile = ParcautomobileDocument.Factory.parse(new File ("d:/parcAuto.xml")); Vehicule[] modelesVehicule = parc.getVehiculeArray(); for (Vehicule v : modelesVehicule){ System.out.println(v.getModele()); Marque[] lesMarques = v.getMarqueArray(); for (Marque m : lesMarques){ }

34 Linterface XMLCursor Chamilah Ingar - Guillaume Monteil - Cyril Tovena // import des classes Java générées précédemment public class InsertionXML { public static void main(String[] args) throws Exception { ParcautomobileDocument Parcautomobile = ParcautomobileDocument.Factory.parse(new File ("d:/parcAuto.xml")); XmlCursor filtreCursor = Parcautomobile.newCursor(); filtreCursor.toNextToken(); filtreCursor.beginElement("vehicule"); filtreCursor.insertAttributeWithValue("modele", "sport"); filtreCursor.dispose(); }

35 XQuery Chamilah Ingar - Guillaume Monteil - Cyril Tovena // import des classes Java générées précédemment public class XQueryXML { public static void main(String[] args) throws Exception { ParcautomobileDocument Parcautomobile = ParcautomobileDocument.Factory.parse(new File ("d:/parcAuto.xml")); String requete = "for $e in //parcautomobile/vehicule/marque " + "where $e/nom = 'Peugeot' " + "return $e//nombre"; XmlCursor monCursor1 = parcautomobile.newCursor().execQuery(requete); System.out.println(monCursor1.getObject().toString()); System.out.println("Expression 1 : le nombre de vehicules de marque Peugeot est : " + monCursor1.getTextValue()); } Peugeot 7

36 XPath Chamilah Ingar - Guillaume Monteil - Cyril Tovena // import des classes Java générées précédemment public class XPathXML { public static void main(String[] args) throws Exception { ParcautomobileDocument Parcautomobile = ParcautomobileDocument.Factory.parse(new File ("d:/parcAuto.xml")); XmlCursor monCursor = Parcautomobile.newCursor(); monCursor.toFirstChild(); monCursor.selectPath("$this//marque//nom"); while (monCursor.toNextSelection()) { System.out.println(monCursor.getTextValue()); } Peugeot 7

37 Chamilah Ingar - Guillaume Monteil - Cyril Tovena


Télécharger ppt "JEE Approfondi Chamilah Ingar - Guillaume Monteil - Cyril Tovena."

Présentations similaires


Annonces Google