SPRING. Michael Fortier. Master Informatique 2ème année. A308, Université de Paris 13

Dimension: px
Commencer à balayer dès la page:

Download "SPRING. Michael Fortier. Master Informatique 2ème année. fortier@lipn.univ-paris13.fr A308, Université de Paris 13"

Transcription

1 SPRING Michael Fortier Master Informatique 2ème année A308, Université de Paris 13 https ://lipn.univ-paris13.fr/ fortier/enseignement/spring/

2 Sommaire 1 Concepts 2 Bean 3 Injection Of Control 4 Aspect Oriented Programming 5 Data Access Object 6 Spring Security 7 Conclusion Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

3 Sommaire 1 Concepts 2 Bean 3 Injection Of Control 4 Aspect Oriented Programming 5 Data Access Object 6 Spring Security 7 Conclusion Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

4 J2EE Spécification Manques (EJB1-2) Lourdeurs Difficultés (sécurité) = Spring pour pallier Robustesse Extensibilité Réutilisabilité Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

5 SPRING : Framework de développement Développé en Java, basé sur la notion de conteneur léger V3.* Open Source, communauté Modulaire = Chaque brique est indépendante Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

6 SPRING : Boîte à tout faire JSP / Servlet JSF Struts Grails RMI JUnit JDBC Hibernate = Interopérabilité frameworks "Conteneur léger" Pas d implémentation d interface nécessaire Infrastructure d un serveur d application JEE Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

7 SPRING : Super fabrique d objets Mode transactionnel Gestion d EJBs Persistance des objets Interface Web WebServices Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

8 SPRING : La pile de services Spring ORM Spring Web Spring AOP (Aspect) Ibatis, Hibernate JDO Spring DAO Gestion des TXs Support JDBC Support DAO Utilitaires Spring Context exposé par JNDI Support EJB Remoting Spring MVC Spring CORE Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

9 SPRING : Application Web n-tiers Interface utilisateur Métier DAO Spring Moteur de servlets Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

10 SPRING : Applications Serveur / Client lourd Client lourd Spring Spring remoting Métier DAO Spring Moteur de servlets Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

11 SPRING : Applications réparties Client lourd Spring Spring remoting Métier Spring Spring remoting DAO Spring Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

12 SPRING : EJB Client Spring EJB Spring Serveur d'applications Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

13 SPRING : Mise en place Librairies du framework : core, beans... Fichier(s) de configuration = applicationcontext.xml Gestion de beans Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

14 Sommaire 1 Concepts 2 Bean 3 Injection Of Control 4 Aspect Oriented Programming 5 Data Access Object 6 Spring Security 7 Conclusion Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

15 JavaBeans : rappels Classe "Serializable" sauvegarder/restaurer l état d instances constructeur sans paramètre accesseurs GET/SET des attributs privés Classe non "final" Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

16 SPRING : types de bean Singletons création d une instance unique à l initialisation (par défaut) Prototypes création à la demande (lors d un appel type : (springfactory.getbean("personne1")) Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

17 Etude de cas : personne & véhicule Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

18 SPRING : BeanFactory Fichier de configuration ApplicationContext.xml <beans> <!-- Premiere fabrique --> <bean id="personne" class="metier.personne" /> <!-- Deuxieme fabrique --> <bean id="voiture" class="metier.voiture"> <property name="personne"> <ref bean="personne"> </property> </bean> </beans> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

19 Propriétés SPRING Déclarer un besoin Valeurs par défaut Initialisations de tableaux/listes Paramètres de configuration Références vers autre bean (IoC) Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

20 Propriétés : Exemple d initialisation TP/BEAN/src/applicationContext.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" " <beans> <bean id="personne1" class="metier.personne" init-method="init" destroy-method="close"> <property name="nom"> <value>bob</value> </property> <property name="age"> <value>40</value> </property> </bean> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

21 Propriétés : Exemple d initialisation TP/BEAN/src/applicationContext.xml <bean id="voiture1" class="metier.voiture" init-method="init" destroy-method="close"> <constructor-arg index="0"> <value>peugeot</value> </constructor-arg> <constructor-arg index="1"> <value>307</value> </constructor-arg> <constructor-arg index="2"> <ref bean="personne1" /> </constructor-arg> </bean> </beans> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

22 Utilisation dans une application Java TP/BEAN/src/Main.java // Recherche du fichier de configuration de Spring ClassPathResource cpr=new ClassPathResource("applicationContext.xml"); // Initialisation de la fabrique SPRING, les singletons sont charges ListableBeanFactory bf = new XmlBeanFactory(cpr); // Initialisation de la methode getbean en parametrant le nom du bean // pour creer ou recuperer un bean declare dans le fichier de // configuration Personne personne1 = (Personne) bf.getbean("personne1"); // Affichage des donnees de personne1 System.out.println("personne1 : " + personne1.tostring()); Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

23 Utilisation dans une application Web web.xml <context-param> <param-name>contextconfiglocation</param-name> <param-value>/web-inf/applicationcontext.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.contextloaderlistener </listener-class> </listener> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

24 Sommaire 1 Concepts 2 Bean 3 Injection Of Control 4 Aspect Oriented Programming 5 Data Access Object 6 Spring Security 7 Conclusion Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

25 IOC : Inversion Of Control (injection de dépendance) Classe A Dépendance Classe B Design Pattern casser les dépendances Se base sur la notion d abstraction commune (interface java) = le framework qui a la charge d injecter les dépendances nécessaires Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

26 IOC : Inversement des rôles Classe A Interface I Classe B Dépendance Sans IOC : application appelle le framework Avec IOC : le framework appelle l application Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

27 IOC : Procédure d injection Module A Module B Module C Framework Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

28 IOC : Etude de cas simple Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

29 IOC : Etude de cas simple Sans Spring Une personne veut louer un véhicule : voiture ou camion Lorsque le véhicule est loué, l action réalisée est l affichage du véhicule loué IVehicule louer() Personne louer_vehicule() Voiture louer() Camion louer() Associations Généralisations Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

30 IOC : Etude de cas simple / code TP/NO_IOC/src/metier/IVehicule.java package metier; public interface IVehicule { public String louer(); } TP/NO_IOC/src/metier/Voiture.java package metier; public class Voiture implements IVehicule{ public String louer(){ return "Je loue une voiture"; } } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

31 IOC : Etude de cas simple / code public class Personne { TP/NO_IOC/src/metier/Personne.java private IVehicule vehicule; public Personne(){} // Initialisation du vehicule, ici : une Voiture public void affectation_vehicule(){ vehicule=new Voiture(); //vehicule=new Camion(); } // Location du vehicule public void louer_vehicule() { System.out.println(vehicule.louer()); } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

32 IOC : Etude de cas simple / code import metier.personne; TP/NO_IOC/src/Main.java public class Main { public static void main(string[] args) { Personne p=new Personne(); // Affectation du vehicule dans le code de la methode p.affectation_vehicule(); // Execution p.louer_vehicule(); } } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

33 IOC : Etude de cas simple / problèmes Fort couplage de l architecture Création d instances DAO Modifications de choix de DAO dans le code Comment tester quand les classes implémentant les DAO (voiture ou camion) ne sont pas développées? Faire fonctionner des classes DAO différentes suivant le contexte d exécution (développement, production...) Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

34 IOC : Etude de cas simple / intégration de Spring Spring injecte les dépendances nécessaires Container IVehicule louer() Personne louer_vehicule() setvehicule() Voiture louer() Camion louer() Associations Généralisations Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

35 IOC : Etude de cas simple / Spring code TP/IOC/src/applicationContext.xml <beans> <bean id="voiture" class="metier.voiture" /> <bean id="camion" class="metier.camion" /> <bean id="personne" class="metier.personne"> <property name="vehicule"> <!-- le changement de vehicule se fait ici --> <ref local="camion"/> </property> </bean> </beans> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

36 IOC : Etude de cas simple / Spring code TP/IOC/src/metier/Personne.java public class Personne { private IVehicule vehicule; } // Injection par mutateur public void setvehicule(ivehicule vehicule) { this.vehicule = vehicule; } // Location du vehicule public void louer_vehicule() { System.out.println(vehicule.louer()); } // Constructeur par defaut public Personne(){} Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

37 IOC : Etude de cas simple / Spring code TP/IOC/src/Main.java public static void main(string[] args) { // Recherche du fichier de configuration de Spring ClassPathResource cpr = new ClassPathResource( "applicationcontext.xml"); } // Initialisation de la fabrique SPRING ListableBeanFactory bf = new XmlBeanFactory(cpr); // Recuperation du bean Personne Personne p = (Personne) bf.getbean("personne"); // Execution p.louer_vehicule(); Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

38 IOC : 3 types d injection Par constructeur Object construitcomposant(string pnom){ Class c=recherchelaclassquiimplemente(pnom) ; String[] dep= recherchelesdependance(pnom) ; Params[] parametresdeconstructeur; Pour chaque element (composant) de dep Faire Object o= construitcomposant(composant) ; Rajouter o a la liste de parametresdeconstructeur ; Fin Faire construireclasse( c, parametresdeconstructeur) } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

39 IOC : 3 types d injection Par mutateurs(setter) Object construitcomposant(string pnom){ Class c=recherchelaclassquiimplemente(pnom) ; Object composant=new c() ; String[] dep= recherchelesdependance(pnom) ; Params[] parametresdeconstructeur; Pour chaque element (composant) de dep Faire Object o= construitcomposant(composant) ; composant.setnommembre(o) ; Fin Faire } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

40 IOC : 3 types d injection Par interface Object construitcomposant(string pnom){ Class c=recherchelaclassquiimplemente(pnom) ; Object composant=new c() ; String[] dep= recherchelesdependance(pnom) ; Params[] parametresdeconstructeur; Pour chaque element (composant) de dep Faire Object o= construitcomposant(composant) ; composant.methodeinjection(o) ; Fin Faire } public interface IInjectMethode{ public void methodeinjection(object o) ; } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

41 Sommaire 1 Concepts 2 Bean 3 Injection Of Control 4 Aspect Oriented Programming 5 Data Access Object 6 Spring Security 7 Conclusion Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

42 Programmation classique Journaux Objet Méthode Logique métier Sécurité Implications Enchevêtrement du code Faible réutilisabilité complexité Baisse de qualité Difficultés à faire évoluer Cache Préoccupations mélangées Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

43 Programmation par aspect Objet Sécurité Journaux Cache Méthode Solutions Décomposer en aspect Programmer la partie métier Recomposer les aspects Logique métier = Ajouter du comportement sans modification de code Préoccupations séparées Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

44 AOP : Utilisation de Spring Découplage des modules Maintenance accrue Meilleure réutilisation Gain de productivité Qualité du code améliorée Code non intrusif Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

45 AOP : 2 types de programmations Statique : au début ou à la fin Dynamique : au moment de l exécution (plus lent) = reconfiguration sans compilation Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

46 AOP : Vocabulaire Point de jonction (Joinpoint) Point d actions (pointcut) Conseil / greffon (advice) Aspect Trammeur / tisseur (Weaver) Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

47 Exemple : gestion des journaux sans aspect public class Personne { private String nom; private int age; TP/AOP/src/metier/Personne.java // Affichage des informations de l individu public String tostring() { String s="nom=["+this.nom+"], age=["+this.age+"]"; // Affichage d un log System.out.println(s); return s; } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

48 Exemple : gestion des journaux sans aspect TP/AOP/src/applicationContext.xml <beans xmlns=" xmlns:xsi=" xsi:schemalocation=" <bean id="personne1" class="metier.personne"> <property name="nom"> <value>bob</value> </property> <property name="age"> <value>40</value> </property> </bean> </beans> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

49 Exemple : gestion des journaux sans aspect public void testpersonne() { // Recherche du fichier de configuration de Spring ClassPathResource cpr = new ClassPathResource( "applicationcontext.xml"); ListableBeanFactory bf = new XmlBeanFactory(cpr); // Recherche du bean et execution Personne personne1 = (Personne) bf.getbean("personne1"); String resultat=personne1.tostring(); } = nom=[bob], age=[40] Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

50 Exemple : gestion des journaux via AOP TP/AOP/src/applicationContext_with_aop.xml <beans xmlns=" xmlns:xsi=" xmlns:aop=" xsi:schemalocation=" <bean id="monlogger" class="aop.monlogger"/> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

51 Exemple : gestion des journaux via AOP TP/AOP/src/applicationContext_with_aop.xml <aop:config> <aop:pointcut id="servicepointcut" expression="execution(* metier.personne.*(..))"/> <aop:aspect ref="monlogger"> <aop:before method="logdebutmethode" pointcut-ref="servicepointcut"/> <aop:after-returning method="logfinmethode" returning="result" pointcut-ref="servicepointcut"/> <aop:around method="injectaround" pointcut-ref="servicepointcut" /> </aop:aspect> </aop:config > Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

52 Exemple : gestion des journaux via AOP MonLogger TP/AOP/src/aop/MonLogger.java // Methode est appelee a chaque fois (et avant) qu une methode du // pointcut est interceptee public void logdebutmethode(joinpoint joinpoint) { Object[] args = joinpoint.getargs(); // Nom de la methode interceptee String name = joinpoint.getsignature().tolongstring(); StringBuffer sb = new StringBuffer(name + " called with: ["); // Liste des valeurs des arguments recus par la methode for(int i = 0; i < args.length; i++) { Object o = args[i]; sb.append(" "+o+" "); sb.append((i == args.length - 1)? "" : ", "); } sb.append("]"); System.out.println(sb); } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

53 Exemple : gestion des journaux via AOP MonLogger TP/AOP/src/aop/MonLogger.java // Methode appelee a chaque fois (et apres) qu une methode du // pointcut est interceptee. Elle recoit en argument result //qui est le retour de la methode interceptee public void logfinmethode(staticpart staticpart, Object result) { // Nom de la methode interceptee String name = staticpart.getsignature().tolongstring(); System.out.println(name + " returning: [" + result + "]"); } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

54 Exemple : gestion des journaux via AOP MonLogger TP/AOP/src/aop/MonLogger.java // Methode avant ET apres qu une methode du pointcut est // interceptee. public Object injectaround(proceedingjoinpoint pjp) throws Throwable { // Exemple de traitement avant execution de la methode System.out.println("INJECT BEFORE!"); // Execution de la methode Object retval = null; try { retval = pjp.proceed(); } catch (Exception e) {} } // Exemple de traitement apres execution de la methode System.out.println("INJECT AFTER!"); return retval; Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

55 Exemple : gestion des journaux via AOP Tests public void testpersonnewithaop() { // Recherche du fichier de configuration de Spring ApplicationContext bf = new ClassPathXmlApplicationContext( new String[]{"applicationContext_with_aop.xml"} ); } // Recherche du bean et execution Personne personne1 = (Personne) bf.getbean("personne1"); personne1.tostring(); Resultats public java.lang.string metier.personne.tostring() called with: [] INJECT BEFORE! nom=[bob], age=[40] public java.lang.string metier.personne.tostring() returning: [nom=[bob], age=[40]] INJECT AFTER! Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

56 JDBCTemplate Hibernate Sommaire 1 Concepts 2 Bean 3 Injection Of Control 4 Aspect Oriented Programming 5 Data Access Object 6 Spring Security 7 Conclusion Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

57 JDBCTemplate Hibernate Design Pattern DAO : principe général Application ObjetMétier 1 ObjetMétier 1 ObjetMétier 1 DAO 1 DAO 2 DAO 1 Couche persistance Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

58 JDBCTemplate Hibernate Design Pattern DAO : structure générale utilise ObjetMétier DAO encapsule Source de données Obtient / Modifie Créé / utilise ObjetTransfert Création d'un objet DAO par classe métier (non par objet) Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

59 JDBCTemplate Hibernate DAO et SPRING Faire une abstraction par rapport à la méthode d accès à la base de données (framework de mapping, jdbc...) Offrir un système de management des transactions Offrir un système d accès aux données Offrir une hiérarchie d exceptions génériques Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

60 JDBCTemplate Hibernate DAO et SPRING Spring Invariable Spécifique - Ouvrir / fermer les connexions - Initialiser les ressources - Exécuter une requête - Récupérer le résultat Template Callback Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

61 JDBCTemplate Hibernate DAO / SPRING / TEMPLATES DAO Support Template Framework de persistance Application DAO BD Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

62 JDBCTemplate Hibernate DAO / SPRING / TEMPLATES DAO Template DAO Callback 1. Initialisation des ressources 2. Ouverture d'une transaction 3. Exécution de la requête 5. Commit / rollback 6. Fermeture de la connexion 4. Envoi du résultat Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

63 JDBCTemplate Hibernate Exemple de travail : stockage Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

64 Exemple JDBC classique TP/JDBC/src/bdd/Derby.java JDBCTemplate Hibernate public class Derby { String connectionurl = "jdbc:derby://localhost:1527/location;user=location;password=mdp"; Statement statement = null; public List<Personne> findall() { ArrayList liste=new ArrayList(); try { // Load the Driver class. Class.forName("org.apache.derby.jdbc.ClientDriver"); //Create the connection using the static getconnection method Connection con = DriverManager.getConnection(connectionURL); //Create a Statement class to execute the SQL statement statement = con.createstatement(); //Execute the SQL statement and get the results in a Resultset ResultSet rs = statement.executequery( "select * from location.personne"); //... Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

65 JDBCTemplate Hibernate Exemple JDBC classique } TP/JDBC/src/bdd/Derby.java // Recuperation des donnes while (rs.next()) { Personne p=new Personne(rs.getString("nom"),rs.getInt("age")); liste.add(p); } } catch (Exception e) { e.printstacktrace(); } finally { if (statement!= null) { try { statement.close();} catch (Exception ex) { ex.printstacktrace();} } } return liste; Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

66 Exemple JDBC classique Insertion TP/JDBC/src/bdd/Derby.java JDBCTemplate public int updateagepersonne(string nom, int age) { int resultat = 0; try { Class.forName("org.apache.derby.jdbc.ClientDriver"); Connection con = DriverManager.getConnection(connectionURL); statement = con.createstatement(); resultat = statement.executeupdate("update "+ "location.personne set age="+age+" where "+ "nom= "+nom+" "); } catch (Exception e) { e.printstacktrace(); } finally { if (statement!= null) { try { statement.close();} catch (Exception ex) { ex.printstacktrace();} } } return resultat; } Hibernate Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

67 JDBCTemplate Hibernate Exemple JDBC classique Problèmes Les tests ne sont pas effectués (existence d attribut, test alphabétique ou numérique, quantité négative...) Maintenabilité? Testabilité? code peu résistant Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

68 JDBCTemplate Hibernate Exemple JDBC classique Améliorations TP/JDBC/src/bdd/Derby.java public int updateagepersonne2(string nom, int age) throws PersonneNotFoundException, AgeNegativeException{ int resultat = 0; try { if (age<0) {throw new AgeNegativeException();} Class.forName("org.apache.derby.jdbc.ClientDriver"); Connection con = DriverManager.getConnection(connectionURL); statement = con.createstatement(); // Recherche de l existence de la personne ResultSet rs=statement.executequery( "select * from "+ "location.personne where nom= "+nom+" "); if (rs==null!rs.next()){ throw new PersonneNotFoundException(); } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

69 JDBCTemplate Hibernate Exemple JDBC classique Améliorations } } TP/JDBC/src/bdd/Derby.java // Update resultat = statement.executeupdate("update "+ "location.personne set age="+age+" where "+ "nom= "+nom+" "); } catch (Exception e) { e.printstacktrace(); } finally { if (statement!= null) { try { statement.close();} catch (Exception ex) { ex.printstacktrace();} } } return resultat; Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

70 JDBCTemplate Hibernate Intérêts de SPRING Gérer les connexions Définir les paramètres de connexion Ouvrir la connexion Spécifier les statements Préparer et exécuter les statements Établir la boucle permettant de parcourir les résultats (si il y en a) Faire le travail pour chaque itération Traiter n importe quelle exception Se charger des transactions Fermer la connexion Découpler les couches métiers / accès aux données Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

71 JDBCTemplate Découpler les couches métiers / accès aux données TP/JDBC/src/metier/IPersonneMetier.java package metier; import exceptions.agenegativeexception; import exceptions.personnenotfoundexception; public interface IPersonneMetier { public int updateagepersonne(string nom, int age) throws PersonneNotFoundException, AgeNegativeException; } Hibernate package dao; import entite.personne; TP/JDBC/src/dao/IPersonneDao.java public interface IPersonneDao { public boolean personneexiste(string nom); public int updatepersonne(string nom, int age); } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

72 JDBCTemplate Hibernate Implémentation classe DAO TP/JDBC/src/dao/PersonneDao.java public class PersonneDao implements IPersonneDao { } private JdbcTemplate jdbctemplate; public void setdatasource(datasource datasource) { this.jdbctemplate = new JdbcTemplate(datasource); } public boolean personneexiste(string nom) { String sql="select count(*) from location.personne where nom=?"; int count=jdbctemplate.queryforint(sql,new Object[]{nom}); return count > 0? true : false; } public int updatepersonne(string nom, int age) { String sql="update location.personne set age=? where nom=?"; return jdbctemplate.update(sql,new Object[]{age,nom}); } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

73 JDBCTemplate Hibernate Implémentation classe métier TP/JDBC/src/metier/PersonneMetier.java public class PersonneMetier implements IPersonneMetier { IPersonneDao personnedao; public void setpersonnedao(ipersonnedao personnedao){ this.personnedao=personnedao; } public int updateagepersonne(string nom, int age) throws PersonneNotFoundException, AgeNegativeException{ } } // Tests if (age<0) {throw new AgeNegativeException();} if (!personnedao.personneexiste(nom)) { throw new PersonneNotFoundException(); } // Update return personnedao.updatepersonne(nom,age); Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

74 JDBCTemplate Hibernate Configuration de Spring TP/JDBC/src/applicationContext.xml <!-- Objets DAO --> <bean id="personnedao" class="dao.personnedao"> <property name="datasource" ref="derbydatasource" /> </bean> <!-- Objets Metier --> <bean id="personnemetier" class="metier.personnemetier"> <property name="personnedao" ref="personnedao" /> </bean> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

75 JDBCTemplate Hibernate Configuration de Spring TP/JDBC/src/applicationContext.xml <!-- Source de donnees Derby --> <bean id="derbydatasource" class="org.springframework.jdbc.datasource.drivermanagerdatasource"> <property name="driverclassname"> <value>org.apache.derby.jdbc.clientdriver</value> </property> <property name="url"> <value>jdbc:derby://localhost:1527/location</value> </property> <property name="username"> <value>location</value> </property> <property name="password"> <value>mdp</value> </property> </bean> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

76 JDBCTemplate Hibernate Exécution public void testjdbctemplate() { ListableBeanFactory bf; bf = new XmlBeanFactory( new ClassPathResource("applicationContext.xml")); IPersonneMetier m=(ipersonnemetier)bf.getbean("personnemetier"); } try { System.out.println(m.updateAgePersonne("michael",-2)); } catch (AgeNegativeException e){} catch (PersonneNotFoundException e){} Age incorrect Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

77 JDBCTemplate Hibernate Hibernate : Rôles / intérêts Gérer la persistance d objets Java Offrir des outils de mapping Objet / Relationnel Lazy loading Abstraction de la couche JDBC (HQL...) Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

78 JDBCTemplate Hibernate Configuration de Spring / Connexion TP/HIBERNATE/src/applicationContext.xml <bean id="derbydatasource" class="org.apache.commons.dbcp.basicdatasour <property name="driverclassname"> <value>org.apache.derby.jdbc.clientdriver</value> </property> <property name="url"> <value>jdbc:derby://localhost:1527/location</value> </property> <property name="username"> <value>location</value> </property> <property name="password"> <value>mdp</value> </property> </bean> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

79 JDBCTemplate Hibernate Configuration de Spring / Factory TP/HIBERNATE/src/applicationContext.xml <bean id="sessionfactorybean" class="org.springframework.orm.hibernate3.localsessionfactory <property name="datasource"> <ref bean="derbydatasource" /> </property> <property name="hibernateproperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.derbydialect< <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.cglib.use_reflection_optimizer">false</prop> </props> </property> <property name="mappingresources"> <list> <value>entite/personne.hbm.xml</value> </list> </property> </bean> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

80 JDBCTemplate Hibernate Configuration de Spring / DAO TP/HIBERNATE/src/applicationContext.xml <bean id="personnedao" class="dao.personnedao"> <property name="sessionfactory"> <ref bean="sessionfactorybean" /> </property> </bean> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

81 JDBCTemplate Hibernate Implémentation TP/HIBERNATE/src/dao/PersonneDao.java public class PersonneDao extends HibernateDaoSupport implements IPersonneDao { public List findpersonnes() { return gethibernatetemplate().find("from entite.personne"); } public void deletepersonne(personne p) { gethibernatetemplate().delete(p); } public void updatepersonne(personne p) { gethibernatetemplate().update(p); } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

82 JDBCTemplate Hibernate Implémentation } TP/HIBERNATE/src/dao/PersonneDao.java public Personne findpersonne(string nom) { List l = gethibernatetemplate().find( "from entite.personne p where p.nom= " + nom + " "); if (l.size() > 0) { return (Personne) l.get(0); } else { return null; } } Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

83 Sommaire Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC 1 Concepts 2 Bean 3 Injection Of Control 4 Aspect Oriented Programming 5 Data Access Object 6 Spring Security 7 Conclusion Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

84 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Spring Security Solution complète pour les applications J2EE Configurer toute la sécurité sur l ensemble du système Indépendant de l environnement Sécuriser n importe quel ressource : url, méthode, objet Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

85 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Concepts de sécurité Authentification : vérifier l identité d une entité Valider l authenticité Ex : login/mdp Autorisation : Rôles Droits Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

86 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Principe de fonctionnement Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

87 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Principe de fonctionnement Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

88 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Etude de cas : sécuriser une application web Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

89 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Configuration du descripteur de déploiement TP/SECURITY/web/WEB-INF/web.xml <listener> <listener-class>org.springframework.security.web.session.httpsessioneventpublisher</listen </listener> <listener> <listener-class>org.springframework.web.context.contextloaderlistener</listener-class> </listener> <context-param> <param-name>contextconfiglocation</param-name> <param-value> classpath:applicationcontextsecure.xml classpath:applicationcontext.xml </param-value> </context-param> <filter> <filter-name>springsecurityfilterchain</filter-name> <filter-class>org.springframework.web.filter.delegatingfilterproxy</filter-class> </filter> <filter-mapping> <filter-name>springsecurityfilterchain</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

90 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Configuration de Spring Security TP/SECURITY/src/java/applicationContextSecure.xml <?xml version="1.0" encoding="utf-8"?> <beans:beans xmlns=" xmlns:beans=" xmlns:xsi=" xsi:schemalocation=" <http auto-config= true > <intercept-url pattern="/**" access="role_user" /> </http> <authentication-manager> <authentication-provider> <user-service> <user name="admin" password="admin" authorities="role_user, ROLE_ADMIN" /> <user name="user" password="user" authorities="role_user" /> </user-service> </authentication-provider> </authentication-manager> </beans:beans> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

91 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Utilisation de l API log4j Hautement configurable (fichiers, syslog, mail...) Différents niveaux FATAL : erreur grave pouvant mener à l arrêt prématuré de l application ERROR : erreur qui n empêche cependant pas l application de fonctionner WARN : avertissement (incohérence dans la configuration), l application peut continuer à fonctionner mais pas forcément de la façon attendue INFO : messages à caractère informatif (nom des fichiers...) DEBUG : messages pouvant être utiles au débogage TRACE : niveau le plus fin utile au débogage Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

92 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Configuration de log4j TP/SECURITY/src/java/log4j.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" > <log4j:configuration xmlns:log4j= > <appender name="ca" class="org.apache.log4j.consoleappender"> <layout class="org.apache.log4j.patternlayout"> <param name="conversionpattern" value="%-4r [%t] %-5p %c %x - %m%n" /> </layout> </appender> <root> <level value="debug" /> <appender-ref ref="ca" /> </root> </log4j:configuration> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

93 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Configuration du descripteur de déploiement TP/SECURITY/web/WEB-INF/web.xml <context-param> <param-name>log4jconfiglocation</param-name> <param-value>classpath:log4j.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.util.log4jconfiglistener</listener-class> </listener> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

94 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Personnalisation du formulaire d authentification TP/SECURITY/web/login.jsp <%@page contenttype="text/html" pageencoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>login</title> </head> <body> <h1>bienvenue</h1> <form method="post" action="j_spring_security_check"> Identifiant :<input name="j_username" value="" type="text" /> <br/> Mot de passe :<input name="j_password" type="password" /> <input value="valider" type="submit" /> </form> </body> </html> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

95 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Configuration du formulaire d authentification TP/SECURITY/src/java/applicationContextSecure.xml <http auto-config= true > <intercept-url pattern="/login.jsp" access="is_authenticated_anonymously" /> <intercept-url pattern="/**" access="role_user" /> <form-login login-page= /login.jsp default-target-url= /index.jsp always-use-default-target= true /> </http> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

96 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Page d échec d authentification Page login-failure.jsp TP/SECURITY/src/java/applicationContextSecure.xml <http auto-config= true > <intercept-url pattern="/login.jsp" access="is_authenticated_anonymously" /> <intercept-url pattern="/login-failure.jsp" access="is_authenticated_anonymously" /> <intercept-url pattern="/**" access="role_user" /> <form-login login-page= /login.jsp default-target-url= /index.jsp always-use-default-target= true authentication-failure-url="/login-failure.jsp"/> </http> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

97 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Page d accès interdit Page accessdenied.jsp TP/SECURITY/src/java/applicationContextSecure.xml <http auto-config= true access-denied-page="/accessdenied.jsp">... </http> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

98 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Page de déconnexion Page logout.jsp Ajouter le lien : <a href="logout">déconnexion</a> TP/SECURITY/src/java/applicationContextSecure.xml <http auto-config= true > <logout logout-success-url="/logout.jsp" invalidate-session="true" logout-url="/logout" delete-cookies="jsessionid" />... </http> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

99 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Utilisation de HTTPs TP/SECURITY/src/java/applicationContextSecure.xml <http auto-config= true > <intercept-url pattern="/login.jsp" access="is_authenticated_anonymously" requires-channel="https"/> <intercept-url pattern="/**" access="role_user" requires-channel="any" /> <form-login login-page= /login.jsp default-target-url= /index.jsp always-use-default-target= true /> <port-mappings> <port-mapping http="8080" https="8181"/> </port-mappings> </http> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

100 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Détection des timeouts Page sessiontimeout.html TP/SECURITY/src/java/applicationContextSecure.xml <http>... <session-management invalid-session-url="/sessiontimeout.html" /> </http> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

101 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Limiter le nombre de sessions ouvertes TP/SECURITY/web/WEB-INF/web.xml <listener> <listener-class> org.springframework.security.web.session.httpsessioneventpublisher </listener-class> </listener> TP/SECURITY/src/java/applicationContextSecure.xml <http>... <session-management invalid-session-url="/login-denied.jsp"> <concurrency-control max-sessions="1" error-if-maximum-exceeded="true" /> </session-management> </http> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

102 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Taglib Sécurisation des pages Web tag d authentification récupérer l identifiant de l utilisateur tag d autorisation afficher/cacher des fragments de JSP en fonction des rôles de l utilisateur connecté ifallgranted : teste si l utilisateur a tous les rôles indiqués ifanygranted : teste si l utilisateur a un des rôles indiqués ifnotgranted : teste si l utilisateur n a aucun des rôles indiqués TP/SECURITY/web/index.jsp <%@ taglib prefix="sec" uri=" Utilisateur: <sec:authentication property="principal.username"/>... <ul> <sec:authorize ifallgranted="role_user"> <li> utilisateur simple </li> </sec:authorize> <sec:authorize ifallgranted="role_admin"> <li> administrateur </li> </sec:authorize> </ul>... Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

103 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Authentification via JDBC Récupérer les informations d une base de données 2 tables : utilisateurs autorisations requetes.sql CREATE SCHEMA gestion; CREATE TABLE gestion.users ( username VARCHAR(50) NOT NULL PRIMARY KEY, password VARCHAR(50) NOT NULL, enabled numeric ); CREATE TABLE gestion.authorities ( username VARCHAR(50) NOT NULL, authority VARCHAR(50) NOT NULL ); INSERT INTO gestion.users (USERNAME, PASSWORD, ENABLED) VALUES ( admin, admin, 1); INSERT INTO gestion.users (USERNAME, PASSWORD, ENABLED) VALUES ( user, user, 1); INSERT INTO GESTION.AUTHORITIES (USERNAME, AUTHORITY) VALUES ( user, ROLE_USER ); INSERT INTO GESTION.AUTHORITIES (USERNAME, AUTHORITY) VALUES ( admin, ROLE_ADMIN ); INSERT INTO GESTION.AUTHORITIES (USERNAME, AUTHORITY) VALUES ( admin, ROLE_USER ); Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

104 Sécurité Fonctionnement Etude de cas Configuration Journalisation Authentification Tuning Tags JDBC Configuration Spring Connexion Jdbc Spring Security TP/SECURITY/src/java/applicationContextSecure.xml <authentication-manager> <authentication-provider> <jdbc-user-service data-source-ref="derbydatasource" users-by-username-query="select username,password,enabled FROM gestion.users WHERE username =?" authorities-by-username-query="select username,authority FROM gestion.authorities WHERE username =?"/> </authentication-provider> </authentication-manager> Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

105 Sommaire 1 Concepts 2 Bean 3 Injection Of Control 4 Aspect Oriented Programming 5 Data Access Object 6 Spring Security 7 Conclusion Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

106 Conclusion Très ouvert et ne limite pas les comportements : pour un même problème, il existe plusieurs solutions déroutant Spring facilite l intégration et l utilisation de librairies tierces, mais la connaissance et la compréhension de ces librairie restent nécessaires. Le comportement générique n est pas forcément adapté aux besoins. Spring est structurant et améliore de façon significative la productivité et la maintenabilité des applications. Il n y a pas là d invention géniale mais plutôt un ensemble cohérent qui, bien que puissant, est simple et relativement intuitif à mettre en œuvre. Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

107 Bibliographie http :// http ://java.sun.com/blueprints/corej2eepatterns/patt erns/dataaccessobject.html Spring par la pratique, Eyrolles, 2006 Spring par l exemple, PEARSSON, 2008 http :// Michael Fortier (Université Paris 13) SPRING M2I,LEE, / 107

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1 La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1 Plan 1. Généralités sur la persistance des données dans les applications 2. La connection

Plus en détail

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. fortier@lipn.univ-paris13.fr A308, Université de Paris 13

WEBSERVICES. Michael Fortier. Master Informatique 2ème année. fortier@lipn.univ-paris13.fr A308, Université de Paris 13 WEBSERVICES Michael Fortier Master Informatique 2ème année fortier@lipn.univ-paris13.fr A308, Université de Paris 13 https ://lipn.univ-paris13.fr/ fortier/enseignement/webservices/ Sommaire 1 Rappels

Plus en détail

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux Formation Webase 5 Ses secrets, de l architecture MVC à l application Web Adrien Grand Centrale Réseaux Sommaire 1 Obtenir des informations sur Webase 5 2 Composants de Webase 5 Un

Plus en détail

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

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki Institut Supérieur de Gestion Cours pour 3 ème LFIG Java Enterprise Edition Introduction Bayoudhi Chaouki 1 Java EE - Objectifs Faciliter le développement de nouvelles applications à base de composants

Plus en détail

Création d une application JEE

Création d une application JEE Création d une application JEE Rédacteurs : Alexandre Baillif, Philippe Lacomme, Raksmey Phan et Michaël PLAN Date : juillet 2010 Mise à jour : Michaël PLAN Date : octobre 2014 Avertissement : - ce document

Plus en détail

Application web de gestion de comptes en banques

Application web de gestion de comptes en banques Application web de gestion de comptes en banques Objectif Réaliser une application Web permettant à un client de gérer ses comptes en banque Diagramme de cas d'utilisation 1 Les cas d'utilisation Connexion

Plus en détail

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

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web. ASTRIUM - Toulouse JEE Formation 2013 TP JEE Développement Web en Java Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web. Figure 1 Architecture

Plus en détail

Compte Rendu d intégration d application

Compte Rendu d intégration d application ISMA 3EME ANNEE Compte Rendu d intégration d application Compte Rendu Final Maxime ESCOURBIAC Jean-Christophe SEPTIER 19/12/2011 Table des matières Table des matières... 1 Introduction... 3 1. Le SGBD:...

Plus en détail

Java DataBaseConnectivity

Java DataBaseConnectivity Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage

Plus en détail

OpenPaaS Le réseau social d'entreprise

OpenPaaS Le réseau social d'entreprise OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3

Plus en détail

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles Types d applications pour la persistance Université de Nice Sophia-Antipolis Version 0.9 28/8/07 Richard Grin Toutes les applications n ont pas une complexité qui nécessite une architecture n- tiers Ce

Plus en détail

Introduction à JDBC. Accès aux bases de données en Java

Introduction à JDBC. Accès aux bases de données en Java Introduction à JDBC Accès aux bases de données en Java Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Eric.Cariou@univ-pau.fr 1 Introduction JDBC : Java Data Base Connectivity

Plus en détail

Alfstore workflow framework Spécification technique

Alfstore workflow framework Spécification technique Alfstore workflow framework Spécification technique Version 0.91 (2012-08-03) www.alfstore.com Email: info@alfstore.com Alfstore workflow framework 2012-10-28 1/28 Historique des versions Version Date

Plus en détail

TP WEBSERVICES. 1 Pré-requis. 1.1 L environnement de développement. 1.2 Les librairies nécessaires 1.3 SOAPUI

TP WEBSERVICES. 1 Pré-requis. 1.1 L environnement de développement. 1.2 Les librairies nécessaires 1.3 SOAPUI Institut Galilée Année 2014-2015 TP WEBSERVICES Programmation et Logiciels sûrs Master 2 PLS Résumé Ce TP s appuie sur le cours de C. Fouqueré traitant des Environnements et Langage Évolués, ainsi que

Plus en détail

Tutoriel d installation de Hibernate avec Eclipse

Tutoriel d installation de Hibernate avec Eclipse Tutoriel d installation de Hibernate avec Eclipse Table des matières 1. Création de la base de données... 4 2. Installation de Hibernate Synchronizer... 5 3. Utilisation de Hibernate... 6 3.1 Création

Plus en détail

Accès aux bases de données

Accès aux bases de données 13 Accès aux bases de données Les bases de données fournissent un mécanisme de stockage persistant pour les données d application et dans bien des cas, elles sont essentielles au fonctionnement des applications.

Plus en détail

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java. Note technique W4 Engine Extension SSO Java Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java. 1 Présentation 3 2 Custom SSO Java 4 3 Bilan 10 Sommaire Référence

Plus en détail

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige.

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour http://cuiwww.unige. : JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java Michel Bonjour http://cuiwww.unige.ch/~bonjour Plan JDBC: API bas niveau pour l accès aux BD (SQL) - Introduction - JDBC et : Java, ODBC, SQL

Plus en détail

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués Architecture JEE. Objectifs attendus Serveurs d applications JEE Systèmes distribués Architectures JEE Normes JEE couches logicielles, n-tiers framework JEE et design patterns 2007/02/28 Eric Hébert.eheb@yahoo.fr

Plus en détail

Architecture Orientée Service, JSON et API REST

Architecture Orientée Service, JSON et API REST UPMC 3 février 2015 Précedemment, en LI328 Architecture générale du projet Programmation serveur Servlet/TOMCAT Aujourd hui Quelques mots sur les SOA API - REST Le format JSON API - REST et Servlet API

Plus en détail

Cours en ligne Développement Java pour le web

Cours en ligne Développement Java pour le web Cours en ligne Développement Java pour le web We TrainFrance info@wetrainfrance Programme général du cours Développement Java pour le web Module 1 - Programmation J2ee A) Bases de programmation Java Unité

Plus en détail

Gestion du service des enseignements

Gestion du service des enseignements Gestion du service des enseignements 27/03/07 1 sur 6 Projet - Gestion du service des enseignements Émetteur du Document - Groupe GSE Destinataire du Document - J.L. Massat Titre - Nom Du Fichier - W_Manuel_Deploiement_v1.0.pdf

Plus en détail

Avant-propos 1. Avant-propos...3 2. Organisation du guide...3 3. À qui s'adresse ce guide?...4

Avant-propos 1. Avant-propos...3 2. Organisation du guide...3 3. À qui s'adresse ce guide?...4 Les exemples cités tout au long de cet ouvrage sont téléchargeables à l'adresse suivante : http://www.editions-eni.fr. Saisissez la référence ENI de l'ouvrage EP5EJAV dans la zone de recherche et validez.

Plus en détail

Outil de planification en ligne pour des créations de rendez-vous ou de sondage

Outil de planification en ligne pour des créations de rendez-vous ou de sondage Outil de planification en ligne pour des créations de rendez-vous ou de sondage Centre de Ressources Informatiques (C.R.I.) d'orléans Université d'orléans 4-6 rue Léonard de Vinci, 45061 Orléans Cedex

Plus en détail

Programmation d application Bases de données avec Java

Programmation d application Bases de données avec Java Plan du document Programmation d application Bases de données avec Java INT Problématique slide 3 Correspondance diagramme de classe slide 4 UML vers schéma relationnel Programmation BD avec JDBC slide

Plus en détail

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

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC Sommaire 1. Objectifs et intérêts... 2 2. Intégrer le driver SQL Server dans SJSAS 9... 2 2.1. Télécharger

Plus en détail

Module BD et sites WEB

Module BD et sites WEB Module BD et sites WEB Cours 8 Bases de données et Web Anne Doucet Anne.Doucet@lip6.fr 1 Le Web Architecture Architectures Web Client/serveur 3-tiers Serveurs d applications Web et BD Couplage HTML-BD

Plus en détail

Construction d'une application MVC distribuée avec Spring Remoting. Partie 1 : HttpInvoker, Hessian, Burlap, RMI

Construction d'une application MVC distribuée avec Spring Remoting. Partie 1 : HttpInvoker, Hessian, Burlap, RMI Construction d'une application MVC distribuée avec Spring Remoting Partie 1 : HttpInvoker, Hessian, Burlap, RMI serge.tahe@istia.univ-angers.fr, juillet 2005 1/54 1 Introduction Nous poursuivons ici les

Plus en détail

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

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp Serveur d'application Client HTML/JS Apache Thrift Bootcamp Pré-requis La liste ci-dessous de logiciels doit être installée et opérationnelle sur la machine des participants : Compilateur thrift http://thrift.apache.org/

Plus en détail

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

1. Installation d'un serveur d'application JBoss: EPITA Ala Eddine BEN SALEM App-Ing2 J2EE T.P. 4 EJB3, Serveur d'application JBoss 1. Installation d'un serveur d'application JBoss: télécharger l'archive du serveur JBoss à l'adresse: http://sourceforge.net/projects/jboss/files/jboss/jboss-5.0.0.ga/jboss-5.0.0.ga.zip/download

Plus en détail

Auto-évaluation Aperçu de l architecture Java EE

Auto-évaluation Aperçu de l architecture Java EE Auto-évaluation Aperçu de l architecture Java EE Document: f1218test.fm 22/03/2012 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION APERÇU

Plus en détail

La gestion de la persistance avec Hibernate. Hibernate et la gestion de persistance. La gestion de la persistance (1/2) Introduction

La gestion de la persistance avec Hibernate. Hibernate et la gestion de persistance. La gestion de la persistance (1/2) Introduction La gestion de la persistance avec et la gestion de persistance Claude Duvallet Université du Havre UFR Sciences et Techniques 25 rue Philippe Lebon - BP 540 76058 LE HAVRE CEDEX Claude.Duvallet@gmail.com

Plus en détail

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT DOCUMENTATION CAS A DESTINATION DES SERVICES TIERS Titre descriptif du document Référence du document REFO-DT-ENTV2-ServeurCAS-v1.2.docx Nom du fichier REFO-DT-ENTV2-ServeurCAS-v1.2.docx Version du document

Plus en détail

Projet Java EE Approfondi

Projet Java EE Approfondi EISTI Projet Java EE Approfondi Manuel d installation du framework Stripes Amaury Languillat, Yann Gonzalez, Arnaud Recher, Vincent Laronde, Anys Mechkar 10 Manuel d installation Téléchargement On part

Plus en détail

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

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose. Université Paris 7 M2 II Protocole Internet TP3 Mail Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose. 1 Protocole SMTP 1. Le protocole SMTP est définit dans

Plus en détail

Mise en œuvre des serveurs d application

Mise en œuvre des serveurs d application Nancy-Université Mise en œuvre des serveurs d application UE 203d Master 1 IST-IE Printemps 2008 Master 1 IST-IE : Mise en œuvre des serveurs d application 1/54 Ces transparents, ainsi que les énoncés

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Groupe Eyrolles, 2005, ISBN : 2-212-11406-0

Groupe Eyrolles, 2005, ISBN : 2-212-11406-0 Groupe Eyrolles, 2005, ISBN : 2-212-11406-0 10 L atelier MyEclipse Eclipse facilite considérablement le développement Java en équipe. Son puissant éditeur, associé à des fonctionnalités de complétion de

Plus en détail

CQP Développeur Nouvelles Technologies (DNT)

CQP Développeur Nouvelles Technologies (DNT) ORGANISME REFERENCE STAGE : 26572 20 rue de l Arcade 75 008 PARIS CONTACT Couverture géographique : M. Frédéric DIOLEZ Bordeaux, Rouen, Lyon, Toulouse, Marseille Tél. : 09 88 66 17 40 Nantes, Lille, Strasbourg,

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Web Tier : déploiement de servlets

Web Tier : déploiement de servlets Web Tier : déploiement de servlets 1 / 35 Plan 1 Introduction 2 Servlet : Principe de fonctionnement 3 Création et développement sur un serveur JEE 4 Quelques méthodes de l API des servlets 5 Utilisation

Plus en détail

TP Programmation Java / JDBC / Oracle

TP Programmation Java / JDBC / Oracle TP Programmation Java / JDBC / Oracle 1. Connectivité avec une base de données Oracle au travers de l interface JDBC L interface de programmation (API) JDBC (Java DataBase Connectivity) est une librairie

Plus en détail

Auto-évaluation Programmation en Java

Auto-évaluation Programmation en Java Auto-évaluation Programmation en Java Document: f0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION PROGRAMMATION EN

Plus en détail

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections

Plus en détail

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Serveur d'archivage 2007 Installation et utilisation de la BD exist Type du document Procédure d'installation Auteur(s) Eric Bouladier Date de création 26/02/20007 Domaine de diffusion tous Validé par Equipe Versions Date Auteur(s) Modifications V1.00 26/02/2007 Eric Bouladier

Plus en détail

Projet de programmation (IK3) : TP n 1 Correction

Projet de programmation (IK3) : TP n 1 Correction Projet de programmation (IK3) : TP n 1 Correction Semaine du 20 septembre 2010 1 Entrées/sorties, types de bases et structures de contrôle Tests et types de bases Tests et types de bases (entiers) public

Plus en détail

PHP. Bertrand Estellon. 26 avril 2012. Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril 2012 1 / 214

PHP. Bertrand Estellon. 26 avril 2012. Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril 2012 1 / 214 PHP Bertrand Estellon Aix-Marseille Université 26 avril 2012 Bertrand Estellon (AMU) PHP 26 avril 2012 1 / 214 SQLite et PDO Base de données SQLite et PDO SQLite écrit les données relatives à la base dans

Plus en détail

Programmation par composants (1/3) Programmation par composants (2/3)

Programmation par composants (1/3) Programmation par composants (2/3) Programmation par composants (1/3) La programmation par composant vise le développement de logiciel par aggrégation de briques logicielles existantes est indépendante de la POO La programmation par composant

Plus en détail

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean. Plan du cours 2 Introduction générale : fondamentaux : les fondamentaux Michel Buffa (buffa@unice.fr), UNSA 2002, modifié par Richard Grin (version 1.1, 21/11/11), avec emprunts aux supports de Maxime

Plus en détail

Urbanisation des SI Conduite du changement IT 20/03/09. Patrick CHAMBET http://www.chambet.com

Urbanisation des SI Conduite du changement IT 20/03/09. Patrick CHAMBET http://www.chambet.com Urbanisation des SI Conduite du changement IT 20/03/09 Sécuriser ses Web Services Patrick CHAMBET http://www.chambet.com Bouygues Telecom Direction Gouvernance, Outils et Architecture / Sécurité du SI

Plus en détail

Mysql avec EasyPhp. 1 er mars 2006

Mysql avec EasyPhp. 1 er mars 2006 Mysql avec EasyPhp 1 er mars 2006 Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requètes vers les bases de données relationnelles. Il en reprend la syntaxe

Plus en détail

Java et les bases de données

Java et les bases de données Michel Bonjour http://cuiwww.unige.ch/~bonjour CENTRE UNIVERSITAIRE D INFORMATIQUE UNIVERSITE DE GENEVE Plan Introduction JDBC: API SQL pour Java - JDBC, Java, ODBC, SQL - Architecture, interfaces, exemples

Plus en détail

Java Aspect Components (JAC) http://jac.objectweb.org

Java Aspect Components (JAC) http://jac.objectweb.org Java Aspect Components (JAC) JAC http://jac.objectweb.org 2 Lionel Seinturier Lionel.Seinturier@lip6.fr Université Pierre & Marie Curie 23/2/06 Un framework de programmation par aspect pour Java Projet

Plus en détail

Introduction à la plateforme J2EE

Introduction à la plateforme J2EE Introduction à la plateforme J2EE Auteur : Oussama Essefi Directeur technique Expert Consulting Oussama.essefi@expert-consulting.biz Copyright 2010 Expert Consulting Page 1 1. Introduction 1.1. Pourquoi

Plus en détail

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites Java Licence Professionnelle 2009-2010 Cours 7 : Classes et méthodes abstraites 1 Java Classes et méthodes abstraites - Le mécanisme des classes abstraites permet de définir des comportements (méthodes)

Plus en détail

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

Java Naming and Directory Interface

Java Naming and Directory Interface Introduction Java Naming and Directory Interface Gaël Thomas gael.thomas@lip6.fr Université Pierre et Marie Curie Master Informatique M2 Spécialité SAR Java Naming and Directory Interface (JNDI) Java Standard

Plus en détail

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris : Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens

Plus en détail

J2EE - Introduction. Développement web - Java. Plan du chapitre

J2EE - Introduction. Développement web - Java. Plan du chapitre Développement web - Java J2EE - Introduction Franck Denoël Master 2 ICA, UPMF Année académique 2007-2008 Franck Denoël Master 2 ICA, UPMF Année académique 2007-2008 Plan du chapitre J2EE Présentation J2EE

Plus en détail

Attaques applicatives

Attaques applicatives Attaques applicatives Attaques applicatives Exploitation d une mauvaise programmation des applications Ne touche pas le serveur lui-même mais son utilisation/ configuration Surtout populaire pour les sites

Plus en détail

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines) Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines) Module 1 : Programmer une application informatique Durée

Plus en détail

Corrigé des exercices sur les références

Corrigé des exercices sur les références Corrigé des exercices sur les références Exercice 3.1.1 dessin Pour cet exercice, vous allez dessiner des structures de données au moyen de petits schémas analogues à ceux du cours, comportant la pile

Plus en détail

PHP 5. La base de données MySql. A. Belaïd 1

PHP 5. La base de données MySql. A. Belaïd 1 PHP 5 La base de données MySql A. Belaïd 1 Base de données C est quoi une base de données? Une base de données contient une ou plusieurs tables, chaque table ayant un ou plusieurs enregistrements Exemple

Plus en détail

Best Practices : Utilisation des APIs de Lotus Web Content Management

Best Practices : Utilisation des APIs de Lotus Web Content Management Best Practices : Utilisation des APIs de Lotus Web Content Management Agenda Scénarios IBM Lotus Web Content Management Java Server Page (JSP) Introduction Balises JSP Composants JSP Exemples JSP Page

Plus en détail

PDO : PHP Data Object 1/13

PDO : PHP Data Object 1/13 PDO : PHP Data Object 1/13 Tous ne sont que des extensions... Les fonstions mysql_* : API mysql Les fonctions mysqli_* aussi Il en est de même pour PDO PDO (avec le pilote PDO MySQL Driver et Extension

Plus en détail

2 Chapitre 1 Introduction

2 Chapitre 1 Introduction 1 Introduction Ce livre présente les Enterprise JavaBeans 2.0 et 1.1 qui constituent la troisième et la deuxième version de la spécification des Enterprise JavaBeans. Tout comme la plate-forme Java a révolutionné

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) Remote Method Invocation (RMI) TP Réseau Université Paul Sabatier Master Informatique 1 ère Année Année 2006/2007 Plan Objectifs et Inconvénients de RMI Fonctionnement Définitions Architecture et principe

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

Spring par la pratique

Spring par la pratique Spring par la pratique 2 e édition Spring 2.5 et 3.0 Arnaud Cogoluègnes Thierry Templier Julien Dubois Jean-Philippe Retaillé avec la contribution de Séverine Templier Roblou et de Olivier Salvatori Groupe

Plus en détail

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs Utilisation des classes de PourCGI par Michel Michaud, version 2002-11-23 Les fichiers PourCGI.h et PourCGI.cpp rendent disponibles deux classes et une fonction libre qui permettent de faire facilement

Plus en détail

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS) PHP et mysql php_mysql PHP et mysql Code: php_mysql Originaux url: http://tecfa.unige.ch/guides/tie/html/php-mysql/php-mysql.html url: http://tecfa.unige.ch/guides/tie/pdf/files/php-mysql.pdf Auteurs et

Plus en détail

Environnements de Développement

Environnements de Développement Institut Supérieur des Etudes Technologiques de Mahdia Unité d Enseignement: Environnements de Développement BEN ABDELJELIL HASSINE Mouna m.bnaj@yahoo.fr Développement des systèmes d Information Syllabus

Plus en détail

Problématiques des développements Java/J2EE

Problématiques des développements Java/J2EE 1 Introduction Les développements Java/J2EE, notamment ceux qui utilisent les EJB, sont réputés complexes, tant en terme de développement que de tests et de maintenance. La productivité des développeurs

Plus en détail

10. Base de données et Web. OlivierCuré [ocure@univ-mlv.fr]

10. Base de données et Web. OlivierCuré [ocure@univ-mlv.fr] 10. Base de données et Web 313 Evolution de l'information Ordre de grandeur : 314 1Mo : 1 gros roman 200Mo : ce que mémorise un être humain dans sa vie. 900Mo : information contenue dans le génome d'une

Plus en détail

Programmation Par Objets

Programmation Par Objets Programmation Par Objets Structures de données package java.util B. Carré Polytech Lille 1 Tableaux et structures de données Tableaux «Objets» taille fixe type des éléments : primitif (homogène) ou objets

Plus en détail

Applet pour visualiser les variables «automate» notifiées

Applet pour visualiser les variables «automate» notifiées Applet pour visualiser les variables «automate» notifiées Sommaire 1. Introduction...2 2. Lecture de variables «automate» notifiées...2 2.1. IHM servant au test :...2 2.2. Codage de l'applet :...2 3. Codage

Plus en détail

les techniques d'extraction, les formulaires et intégration dans un site WEB

les techniques d'extraction, les formulaires et intégration dans un site WEB les techniques d'extraction, les formulaires et intégration dans un site WEB Edyta Bellouni MSHS-T, UMS838 Plan L extraction des données pour un site en ligne Architecture et techniques Les différents

Plus en détail

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives : ntroduction 1/28 2/28 Anne-Cécile Caron Licence MAGE - Bases de Données 2013-2014 Application base de données Pour le développeur : Quel est l environnement? type de client (mode client serveur, intranet,...)

Plus en détail

Le Modèle de Sécurité dans JAVA

Le Modèle de Sécurité dans JAVA Le Modèle de Sécurité dans JAVA $Id : javasecurity.lyx 1565 2008-10-22 13 :57 :30Z phil $ 22 octobre 2008 Université de Cergy-Pontoise, 2 rue A. Chauvin 95302 Cergy-Pontoise cedex e-mail laroque@u-cergy.fr

Plus en détail

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin Sécurité des sites Web Pas un cours un recueil du net INF340 Jean-François Berdjugin Vulnérabilité Définition (wikipédia) : Dans le domaine de la sécurité informatique, une vulnérabilité est une faiblesse

Plus en détail

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

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants. RMI Remote Method Invocation: permet d'invoquer des méthodes d'objets distants. Méthode proche de RPC. Outils et classes qui rendent l'implantation d'appels de méthodes d'objets distants aussi simples

Plus en détail

Développement Web - Object Relational Mapping and Hibernate

Développement Web - Object Relational Mapping and Hibernate 1 / 58 Développement Web - Object Relational Mapping and Jean-Michel Richer jean-michel.richer@univ-angers.fr http://www.info.univ-angers.fr/pub/richer M1/M2 Informatique 2010-2011 2 / 58 Plan Plan 1 Introduction

Plus en détail

Composants Logiciels. Le modèle de composant de CORBA. Plan

Composants Logiciels. Le modèle de composant de CORBA. Plan Composants Logiciels Christian Pérez Le modèle de composant de CORBA Année 2010-11 1 Plan Un rapide tour d horizon de CORBA 2 Introduction au modèle de composant de CORBA Définition de composants CORBA

Plus en détail

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework L'objectif de ce document est de poser des bases de réflexion sur la modélisation d'un projet réalisé

Plus en détail

Patrons de Conception (Design Patterns)

Patrons de Conception (Design Patterns) Patrons de Conception (Design Patterns) Introduction 1 Motivation Il est difficile de développer des logiciels efficaces, robustes, extensibles et réutilisables Il est essentiel de comprendre les techniques

Plus en détail

Refonte front-office / back-office - Architecture & Conception -

Refonte front-office / back-office - Architecture & Conception - Refonte front-office / back-office - Architecture & Conception - GLG204 - Architectures Logicielles Java 2008/2009 Nom : Cédric Poisson Matricule : 06-49012 Version : 1.0 Jeudi 28 mai 2009 1 / 23 Table

Plus en détail

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

Création d un service web avec NetBeans 5.5 et SJAS 9 Sommaire Création d un service web avec NetBeans 5.5 et SJAS 9 1. Présentation... 2 2. Création d un service web avec NetBeans... 2 2.1. Création d une application Web... 2 2.2. Création du service web...

Plus en détail

RMI le langage Java XII-1 JMF

RMI le langage Java XII-1 JMF Remote Method Invocation (RMI) XII-1 Introduction RMI est un ensemble de classes permettant de manipuler des objets sur des machines distantes (objets distants) de manière similaire aux objets sur la machine

Plus en détail

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement Guillaume HARRY l Contenu sous licence Creative Commons CC-BY-NC-ND Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement P. 2 1. Introduction 2.

Plus en détail

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ; CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe

Plus en détail

Première coupe : Introduction à la plateforme Java EE JAVA JAVA. Introduction à la plateforme Java EE. Introduction à la plateforme Java EE

Première coupe : Introduction à la plateforme Java EE JAVA JAVA. Introduction à la plateforme Java EE. Introduction à la plateforme Java EE Première coupe : CREATION : 2010/04/22 MISE A JOUR : 2010/07/01 GLASSFISH:3.0.1 NETBEANS : 6.8 Ce TP de découverte de la plateforme Java EE est une traduction adaptée de «Your First Cup :An Introduction

Plus en détail

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T> Page 1 sur 5 TP3 Lectures préalables : l Java_II l tutorial Interfaces Thèmes du TP : l la classe Object l Vector l Stack Une pile d'objects Les éléments de la classe Pile sont maintenant des instances

Plus en détail

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2) Le langage PHP (2) Walid Belkhir Université de Provence belkhir@cmi.univ-mrs.fr http://www.lif.univ-mrs.fr/ belkhir/ 1 / 54 1 La programmation orientée objet 2 Gestion de Connexions HTTP 3 Manipulation

Plus en détail

Documentation CAS à destination des éditeurs

Documentation CAS à destination des éditeurs Documentation CAS à destination des éditeurs Sommaire Préambule... 1 Présentation de CAS...2 Intérêt... 2 Fonctionnement de base...2 Synoptique des échanges (1ère connexion)... 2 Synoptique des échanges

Plus en détail

Les architectures 3-tiers Partie I : les applications WEB

Les architectures 3-tiers Partie I : les applications WEB Les architectures 3-tiers Partie I : les applications WEB 1 Evolutions logicielles Des objets aux composants... Objets JavaBeans, Objets ActiveX, Objets COM,... 1 Evolutions logicielles Des objets aux

Plus en détail

Plateforme PAYZEN. Définition de Web-services

Plateforme PAYZEN. Définition de Web-services Plateforme PAYZEN Définition de Web-services Ordre de paiement Version 1.1 Rédaction, Vérification, Approbation Rédaction Vérification Approbation Nom Date/Visa Nom Date/Visa Nom Date/Visa Lyra-Network

Plus en détail

Master Informatique et Systèmes. Architecture des Systèmes d Information. 03 Architecture Logicielle et Technique

Master Informatique et Systèmes. Architecture des Systèmes d Information. 03 Architecture Logicielle et Technique Master Informatique et Systèmes Architecture des Systèmes d Information 03 Architecture Logicielle et Technique Damien Ploix 2014-2015 Démarche d architecture SI : structuration en vues Quels métiers?

Plus en détail

Threads. Threads. USTL http://www.lifl.fr/ routier 1

Threads. Threads. USTL http://www.lifl.fr/ routier 1 Threads USTL http://www.lifl.fr/ routier 1 Rappels - Définitions un Process est un programme qui tourne et dispose de ses propres ressources mémoire. OS multi-tâche plusieurs process en concurrence un

Plus en détail