Chamilah Ingar - Guillaume Monteil - Cyril Tovena

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

IntroductionArchitecturesPropriétésTâches ANT Apports par rapport à uPortal Un seul fichier de configuration Ajout de librairies Ajout de CAS comme méthode.
DOM Document Object Model. Généralités Standard du W3C Parseur XML – Génération dun arbre dobjet – Construction totale de larbre DOM est spécifié en IDL.
SAX Simple API for XML. Généralités API non standard développé par les membres du forum XML-DEV Parseur XML – Orienté événement – Parsing dynamique SAX.
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Cours de NETSILON Réalisé par: Hitcho introduction Netsilon est un logiciel qui permet de concevoir une application web avec PHP.
Cours MIAGE « Architectures Orientées Services » Henry Boccon-Gibod 1 Architectures Orientées Services Composants de Service Exemple pratique de développement.
MySQL I / Présentation. II / Administration et Outils.
Premiers pas avec Apache Ant Par Guillaume BITAUDEAU Le 16/10/2003.
Les technologies XML Cours 3 : Les APIS XML Janvier Version 1.0 -
INTRODUCTION A JAVA Chapitre 1 : Introduction
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
Stéphane Frenot - Département Télécommunication - SID - II - Jdbc 280 JDBC Java Databases Connectivity.
TP de mise en oeuvre d’une PKI avec Openssl
JDBC: manipuler une base de données en Java IFT6800 – E 2007 Jian-Yun Nie.
Les entrées /sorties en Java François Bonneville
Projet J2EE Maverick XMLBeans Garcel Jean-Baptiste – Le Loc Martin – Muller Thibaut.
Présentation des frameworks pour Java EE
Projet JEE approfondi Stripes / Toplink
Connexion base de données
Chapitre IV Object, interfaces, classes imbriquées.
Injection de dépendances
Installation OpenBravo
J2EE : Framework Wicket et JibX
LOG 02 Bases de Données Avancées Rappels sur JSP / Servlet
BlueJ_XI 1 Java, les objets : tout de suite ! Gestion des erreurs : les exceptions Notes de cours associées au chapitre 11 tutorial BlueJ
CGI, Servlet. Script CGI, Servlet Motivation Exécution dun traitement coté serveur web Traitement de formulaire Génération de pages html à la volée Ex.
A. Roussanaly - Université Nancy2 AXIS Master MIAGE/SID – Université NANCY2.
UNIVERSITE CHOUAIB DOUKKALI Département des mathématiques
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Faculté I&C, Claude Petitpierre, André Maurer 1 Java.
Débugage avec log4j Azim Roussanaly.
M2 – MIAGE/SID Servlet M2 – MIAGE/SID
Tapestry - Eclipse Link
Badr Benmammar Programmation concurrente et temps réel en Java Badr Benmammar
JDBC ou comment manipuler une base de données en Java ?
Historique de SystemC Regroupe 4 courants didées: SCENIC Project : Synopsys+UC Irvine Philips System-Level Data Types, VSIA SLD DWG IMEC, Hardware-Software.
Le patron de conception « Strategy » Simon Durocher ( )
Programmation par Objets et Java
JUnit Présentation complète de JUnit et « guide d’utilisation » en 13 transparents.
29/01/09SpringFramework1 SpringFramework Alice GARCIA Fabien FAGOAGA Option Génie Logiciel 3 ème année ENSEIRB.
Groupe : Marc BENSILHE, Guillaume GOURMENT et Paul FLYE SAINTE MARIE
Création d'un projet Web avec Netbeans
1 CSI 2532 Lab5 Installation de JDBC Février 13, 2012.
1 Les paquetages («packages»). 2 L'objectif avec les paquetages («packages») est de rendre accessibles aux utilisateurs des classes définies par d'autres.
I.S.I.S. Information System Initial Specification Rétro-conception de Bases de données Cyr Gabin Bassolet TIMC – équipe OSIRIS 21 décembre 2004.
OpenCV: Introduction au Traitement d’Images et Vidéo
Badr Benmammar Programmation concurrente et temps réel en Java Badr Benmammar
Servlets. 2 H. Fauconnier M2-Internet Contenu dynamique Perl/cgi indépendant de la plateforme Extensions du serveur exemple ASP M2-Internet 3 H. Fauconnier.
Cours 11 Threads. Chapitre X threads threadPOO-L3 H. Fauconnier3 Threads threads: plusieurs activités qui coexistent et partagent des données exemples:
CSI1502 Principes fondamentaux en conception des logiciels Chapter 8: Gestion des exceptions.
1 CSI 2532 Lab6 Application Web et DB Février 27, 2012.
Fabienne Boyer Laboratoire LIG (INRIA-UJF-INPG) Projet SARDES, INRIA Rhône-Alpes APACHE/VELOCITY.
Fabienne Boyer Laboratoire LIG (INRIA-UJF-INPG) Projet SARDES, INRIA Rhône-Alpes Usage.
Michel Coletta - Journées PATTERNS Avril Grenoble1 STRUTS Introduction Technologies Java Architecture Développement Enseigner quoi ?
Initiation au web dynamique - TP
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
M2 – MIAGE/SID Servlet M2 – MIAGE/SID
GWT - QuickStart V 1.0 / May. Mise en place de l’environnement Java : Version 1.4 minimum IDE Eclipse 3.3 Europa : lien (Eclipse J2EE recommandée)‏lien.
BOUSQUET Alexis - GUILLEMIN Vincent - PETIT Cédric
Module I-C3 : Applications Web IUT R&T 2e année
4 Introduction des objets. Les chaînes et tableaux
Découverte des Framework : SPRING & JAXB
Masters IIGLI et ILGII – Intranet internet extranet – – Claude Montacié 1 Cours n° 10 Accès distant aux bases de données.
Tutorat en bio-informatique
Struts.
Cours du 5 novembre.
G.KEMBELLEC - UP81 Master 2 THYP Cas pratique d’utilisation De simpleXML Un lecteur de RSS Novembre 2009.
Master 1 SIGLIS Intégration des données dans l’entreprise Stéphane Tallard JDBC: Java Database Connectivity Master 1 SIGLIS1JDBC.
Atos, Atos et le poisson, Atos Origin et le poisson, Atos Consulting ainsi que le poisson seul sont des marques déposées d'Atos Origin SA. © 2006 Atos.
Transcription de la présentation:

Chamilah Ingar - Guillaume Monteil - Cyril Tovena JEE Approfondi Makumba & xmlbeans Chamilah Ingar - Guillaume Monteil - Cyril Tovena

JEE approfondi - Makumba & XMLBeans Plan I- Makumba Introduction Installation Exemple Test II- XMLBeans Chamilah Ingar - Guillaume Monteil - Cyril Tovena

Chamilah Ingar - Guillaume Monteil - Cyril Tovena Makumba Chamilah Ingar - Guillaume Monteil - Cyril Tovena

Makumba - Introduction Conception en 2001 par une association d’étudiants Basé sur le design pattern MVC Librairie de tags JSP => facilite l’interaction entre l’application et la BDD associée Chamilah Ingar - Guillaume Monteil - Cyril Tovena

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

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

Makumba - Exemple 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

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

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

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

Makumba - Exemple 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 # Personne.mdd # Fichier de description pour la table Personne nom=not null char[32] ; age=not null int ; Chamilah Ingar - Guillaume Monteil - Cyril Tovena

Chamilah Ingar - Guillaume Monteil - Cyril Tovena Makumba - Exemple Application monProjet/WEB-INF/index.jsp Clic droit sur monProjet > New > JSP > index.jsp Les balises « mak » permettent d’agir sur la BDD et d’y récupérer des données. <%@taglib uri="http://www.makumba.org/presentation" prefix="mak" %> <mak:list from="Person p">    <mak:value expr="p.name"/>, <mak:value expr="p.age"/> </mak:list> Chamilah Ingar - Guillaume Monteil - Cyril Tovena

Chamilah Ingar - Guillaume Monteil - Cyril Tovena Makumba - Test Après l’installation on lance la jsp et on obtient une erreur de lancement du serveur Tomcat : 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.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 Chamilah Ingar - Guillaume Monteil - Cyril Tovena

Chamilah Ingar - Guillaume Monteil - Cyril Tovena Makumba - Test La configuration de Tomcat ne convient pas à Makumba ! Dans le répertoire d’installation de tomcat, trouver le fichier context.xml dans le répertoire conf Ajouter l’attribut « privileged=¨true¨ » à la balise <context> Chamilah Ingar - Guillaume Monteil - Cyril Tovena

Chamilah Ingar - Guillaume Monteil - Cyril Tovena Makumba - Test 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 Chamilah Ingar - Guillaume Monteil - Cyril Tovena

Chamilah Ingar - Guillaume Monteil - Cyril Tovena Makumba - Test 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 Chamilah Ingar - Guillaume Monteil - Cyril Tovena

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

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

Chamilah Ingar - Guillaume Monteil - Cyril Tovena Makumba - Test Un autre exemple <mak:newForm> Chamilah Ingar - Guillaume Monteil - Cyril Tovena

Chamilah Ingar - Guillaume Monteil - Cyril Tovena Makumba - Test <mak:editForm> Chamilah Ingar - Guillaume Monteil - Cyril Tovena

Chamilah Ingar - Guillaume Monteil - Cyril Tovena xmlbeans Chamilah Ingar - Guillaume Monteil - Cyril Tovena

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

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

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

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

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

Xmlbeans - installation Variables d’environnement – 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.jar:$CLASSPATH For XMLBeans V2, export CLASSPATH=$CLASSPATH:$XMLBEANS_HOME/lib/jsr173[_1.0]_api.jar Chamilah Ingar - Guillaume Monteil - Cyril Tovena

Xmlbeans - installation 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

Xmlbeans - exemple Génération des classes : 1ère méthode Elle se fait à partir d’un schéma XSD Création d’une tâche ANT (build.xml) : L’archive mesSchemas.jar est à placer dans le build path du projet. <?xml version="1.0" encoding="UTF-8" ?>   <project name= " monProjet" default="xmlbean" basedir=".">       <property name="xmlbeans.home" value="." />       <property name="schema" value="schema/monSchema.xsd" />       <property name="dest.jar" value="dest/mesSchemas.jar" />          <path id="xmlbeans.path">         <fileset dir="${xmlbeans.home}/lib"   includes="*.jar"/>       </path>       <taskdef name="xmlbean"  classname="org.apache.xmlbeans.impl.tool.XMLBean"   classpathref="xmlbeans.path"    />              <target name="xmlbean">          <xmlbean schema="${schema}"                    srcgendir="src"                    destfile="${dest.jar}"                    classpathref="xmlbeans.path" />       </target>   </project>   Chamilah Ingar - Guillaume Monteil - Cyril Tovena

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

Xmlbeans - exemple Problème avec Eclipse Il faut cocher toutes les cases. Si vous utilisez XMLBeans avec Eclipse et Apache Tomcat, et que vous obtenez l’erreur : 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

Xmlbeans - exemple Génération d’un fichier XML // 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);    } <?xml version="1.0" encoding="UTF-8"?>   <parcautomobile>     <vehicule modele="coupe">           <marque>               <nom>Renault</nom>           </marque>  </vehicule> </parcautomobile> Chamilah Ingar - Guillaume Monteil - Cyril Tovena

Xmlbeans - exemple Parsing d’un fichier XML // 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){                               }   } }   Chamilah Ingar - Guillaume Monteil - Cyril Tovena

Xmlbeans - exemple L’interface XMLCursor // 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.toNextToken();             filtreCursor.beginElement("vehicule");           filtreCursor.insertAttributeWithValue("modele", "sport");   filtreCursor.dispose(); }   Chamilah Ingar - Guillaume Monteil - Cyril Tovena

Chamilah Ingar - Guillaume Monteil - Cyril Tovena Xmlbeans - exemple XQuery <parcautomobile> <vehicule> <marque> <nom> Peugeot </nom> <nombre> 7 </nombre> </marque> </vehicule> </parcautomobile> // 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());   }   Chamilah Ingar - Guillaume Monteil - Cyril Tovena

Chamilah Ingar - Guillaume Monteil - Cyril Tovena Xmlbeans - exemple XPath <parcautomobile> <vehicule> <marque> <nom> Peugeot </nom> <nombre> 7 </nombre> </marque> </vehicule> </parcautomobile> // 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());               }   }   Chamilah Ingar - Guillaume Monteil - Cyril Tovena

Chamilah Ingar - Guillaume Monteil - Cyril Tovena Xmlbeans - test Chamilah Ingar - Guillaume Monteil - Cyril Tovena