Les EJB Enterprise Java Beans

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

Download "Les EJB Enterprise Java Beans"

Transcription

1 Les EJB Enterprise Java Beans Daniel Hagimont IRIT/ENSEEIHT 2 rue Charles Camichel - BP TOULOUSE CEDEX 7 Daniel.Hagimont@enseeiht.fr 1

2 Préambules Les éléments techniques de ce cours reposent sur Java jdk1.8.0_20 Apache-tomcat JBoss EAP GA (EAP built from AS 7.4) / Eclipse Java EE IDE for Web Developers Version: Kepler Service Release 2 2

3 Modèle MVC Model View Controler Séparation entre Le contrôleur : servlet qui aiguille les requêtes La vue : pages JSP pour l affichage à l écran Le Modèle : les classes (beans) qui traitent les données Requête HTTP Controler (quel traitement? quelle page? ) Model (traitement) Réponse HTTP View (page web) 3

4 Architecture souhaitée Presentation (VC) Business (M) Requête HTTP Controler servlet result Facade Data Réponse HTTP View JSP/HTML 4

5 Architecture souhaitée Clients Serveur d'application (Jboss) SGBD (postgresql) Client Java RMI EJB Container Client Web HTTP Web Container EJB Facade BD Client Web service SOAP Servlet JSP Web Services Entity 5

6 Motivations Solutions clusterisées Tolérance aux pannes Passage à l'échelle Maintenance et évolution du code Adaptation, extension Portabilité (sur d'autres serveurs d'application) Différents types de client (Web, lourd, mobiles...) Propriétés non-fonctionnelles (services techniques) Persistance Transactions Sécurité 6

7 Les EJB Caneva (framework) logiciel pour gérer Des Entity beans Représentation des données stockées en base de donnée Évite d'avoir à implanter l'accès à la BD avec JDBC Des Session beans Pour implanter la facade Inclut le code de l'application qui utilise les données (Entity) Des Message Driven beans Pour des traitements asynchrones 7

8 Prise en compte de services techniques Services techniques appelé propriétés non-fonctionnelles La distribution Les transactions La persistance Le cycle de vie La montée en charge Le concurrence Le sécurité La sérialisation Implantation par le container, configuration 8

9 Trois types d'ejb Entity beans Représentent les données manipulées par l application Chaque Entity est associé à une table au niveau de la base de données Session beans Accessibles à distance (via RMI et IIOP) Implémentent le code métier Stateless session beans : sans état Une instance pour plusieurs connexions clientes (allouée à partir d'un pool) Ne conserve aucune donnée dans son état Statefull session bean : avec état Création d une instance pour chaque connexion cliente Conserve des données entre les échanges avec le client Singleton: Instance Unique Création d une instance unique quelque soit le nombre de connexion. Message Driven Beans : Beans de messages Un listener exécute des traitements à réception d'un message JMS 9

10 Beans et Container Client EJB Client EJB Client EJB Client EJB Client EJB Client EJB Singleton ejb1 Stateless ejb2 Stateless ejb2 Stateless ejb2 Statefull ejb3 Statefull ejb3 Container EJB Entity Entity Entity Entity Entity JPA JCA JTA JMS JNDI JDBC JAXWS JAXRS CORBA 10

11 EJB session Interface Remote Accessible à distance Interface Local Accessible en local uniquement (dans le serveur d'application) Classe du @Stateless) Peut implanter les 2 interfaces Local et Remote JNDI Les interfaces définies sont exportées dans JNDI Nom de la classe utilisée, ou nom passé en attribut du Une recherche retourne une référence au bean (unique ou une copie) 11

12 Un exemple : application bancaire Gestion de compte Données numero, nom, solde Méthodes Ajouter un compte Consulter un compte Consulter tous les comptes Créditer sur un compte Débiter d'un compte Depuis un client lourd distant Depuis une application Web (on pourrait le faire avec un WS) 12

13 Projet eclipse Avec un Dynamic Web Project (DWP) unique Inclut les EJB, les servlet/jsp On exporte un war dans Jboss Avec un EJB project L'EJB project inclut seulement les EJB (exportation d'un ejb-jar) Un DWP séparé inclut les servlet/jsp (exportation d'un war) Il faut configurer le DWP pour qu'il ait accès (classpath) aux interfaces des EJB 13

14 Création du Dynamic Web Project dans eclipse File->New->DynamicWeb Project Target runtime Localisation de JBoss On crée ensuite Des classes/interfaces Avec Annotations <project-ejb> New Class Click droit <project> 14

15 Les données manipulées public class Compte implements Serializable { private int num; private String nom; private int solde; public Compte() { public Compte(int num, String nom, int solde) { this.num = num; this.nom = nom; this.solde = solde; public String tostring() { return "Compte [num="+num+", nom="+nom+", solde="+solde+"]"; // setters and getters 15

16 Interface Remote / interface public interface IBanqueRemote { public void addcompte(compte c); public List<Compte> consultercomptes(); public Compte consultercompte(int num); public void debit(int num, int montant); public void credit(int num, int public interface IBanqueLocal { public void addcompte(compte c); public List<Compte> consultercomptes(); public Compte consultercompte(int num); public void debit(int num, int montant); public void credit(int num, int montant); 16

17 Implantation d'un EJB public class BanqueEjbImpl implements IBanqueLocal, IBanqueRemote { private Map<Integer, Compte> comptes = new Hashtable<Integer, Compte>(); public void addcompte(compte c) { comptes.put(c.getnum(), c); public List<Compte> consultercomptes() { return new ArrayList<Compte>(comptes.values()); public Compte consultercompte(int num) { Compte c = comptes.get(num); if (c == null) throw new RuntimeException("Compte introuvable"); return c; 17

18 Implantation d'un EJB Stateless public void debit(int num, int montant) { Compte c = consultercompte(num); if (c.getsolde()<montant) throw new RuntimeException("Solde insuffisant"); c.setsolde(c.getsolde()-montant); public void credit(int num, int montant) { Compte c = consultercompte(num); public void initialisation() { addcompte(new Compte(1, "dan", 2000)); addcompte(new Compte(2, "alain", 4000)); addcompte(new Compte(3, "luc", 6000)); 18

19 Déploiement dans JBoss On déploie l'archive du projet (war) qui inclut Les 2 interfaces : IBanqueLocal et IBanqueRemote Les 2 classes : Compte et BanqueEjbImpl <project-ejb> Export WAR File Dans JBoss On a lancé JBoss (bin/standalone.sh) On exporte le war dans standalone/deployments Le bean est exporté dans le JNDI du serveur 19

20 Déploiement dans JBoss 20

21 Client lourd Une librairie jboss-client.jar doit être importée dans le client Elle gère un JNDI client Elle génère des stubs pour les références récupérées Le nom du bean dans le JNDI client est String jndiname = "ejb:"+appname+"/"+modulename+"/"+ distinctname+"!"+viewclassname; appname="" ModuleName="bank" (projet eclipse) DistinctName="BanqueEjbImp" (classe) ViewClassName="bk.IBanqueRemote" (interface) 21

22 Un client lourd Un projet Java séparé Utilise RMI pour accéder à l'interface Remote public class ClientEjb { public static void main(string args[]) { try { String appname=""; String modulename="bank"; String distinctname="banqueejbimpl"; String viewclassname=ibanqueremote.class.getname(); Context ctx = new InitialContext(); String jndiname = "ejb:"+appname+"/"+modulename+"/"+distinctname +"!"+viewclassname; System.out.println(jndiName); IBanqueRemote stub = (IBanqueRemote)ctx.lookup(jndiName); System.out.println("affichage de tous les comptes"); List<Compte> cptes = stub.consultercomptes(); for(compte cp:cptes) System.out.println(cp); catch (Exception ex) {ex.printstacktrace(); 22

23 Dépendances du client <project-client> Build Path Configure Build Path Ajouter <project-ejb> dans Projects Pour avoir accès aux interfaces du bean Ajouter jboss-client.jar dans Libraries Un stub générique Se trouve dans <jboss-home>/bin/client 23

24 Configuration JNDI pour le client # à placer dans le classpath du client, par exemple dans src du projet eclipse jboss-ejb-client.properties endpoint.name=client-endpoint remote.connectionprovider.create.options.org.xnio.options.ssl_enabled=false remote.connections=default remote.connection.default.host=localhost remote.connection.default.port=4447 jndi.properties java.naming.factory.url.pkgs=org.jboss.ejb.client.naming 24

25 Exécution client lourd 25

26 Un client web (servlet) Soit la servlet est dans une JVM séparée Configuration comme un client lourd Soit le servlet est dans le serveur d'application (avec les EJB) Injection de private IBanqueLocal facade; Au déploiement, variable initialisée avec une instance de stateless, statefull ou singleton 26

27 Un client web public class Controller extends HttpServlet { private static final long serialversionuid = private IBanqueLocal facade; protected void doget(httpservletrequest request, HttpServletResponse response) throws ServletException, IOException { try { String action=request.getparameter("action"); if (action.equals("consulter")) { int num=integer.parseint(request.getparameter("num")); request.setattribute("num", num); request.setattribute("compte", facade.consultercompte(num)); else if (action.equals("consultertous")) { request.setattribute("comptes", facade.consultercomptes()); else 27

28 Un client web (servlet) if ((action.equals("debit")) (action.equals("credit"))) { int num=integer.parseint(request.getparameter("num")); int montant=integer.parseint(request.getparameter("montant")); request.setattribute("num", num); request.setattribute("montant", montant); if (action.equals("debit")) facade.debit(num, montant); else facade.credit(num, montant); catch (Exception ex) { request.setattribute("exception", ex.getmessage()); request.getrequestdispatcher("banque.jsp").forward(request, response); 28

29 Une petite JSP page language="java" import="bk.*, java.util.*" contenttype="text/html; charset=utf-8" 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>insert title here</title> </head> <body> <form action="controller" method="get"> <table> <tr> <td> Code :</td> <td><input type="text" name="num" value="${num"></td> <td><input type="submit" name="action" value="consulter"></td> <td><input type="submit" name="action" value="consultertous"></td> </tr> </table> </form> 29

30 Une petite JSP <% if (request.getattribute("compte")!= null) { %> <table> <tr><td> Num :</td><td>${compte.num</td></tr> <tr><td> Nom :</td><td>${compte.nom</td></tr> <tr><td> Solde :</td><td>${compte.solde</td></tr> </table> <form action="controller" method="get"> <table> <tr> <td><input type="hidden" name="num" value="${num"></td> <td><input type="text" name="montant" value="${montant"></td> <td><input type="submit" name="action" value="debit"></td> <td><input type="submit" name="action" value="credit"></td> </tr> </table> </form> <% %> 30

31 Une petite JSP <% List<Compte> l = (List<Compte>)request.getAttribute("comptes"); if (l!= null) { %> <table border="1" width="80%"> <tr> <th>num</th><th>nom</th><th>solde</th></tr> <% for (Compte c : l) { %> <tr><td><%=c.getnum() %></td><td><%=c.getnom() %></td><td><%=c.getsolde() %></td></tr> <% %> </table> <% %> ${exception </body> </html> 31

32 Exécution 32

33 Un client Web Service Il faut exporter le singleton comme public interface IBanqueRemote { public void addcompte(compte c); public List<Compte> consultercomptes(); public Compte consultercompte(int public void debit(int num, int public void credit(int num, = "bk.ibanqueremote", servicename = "BanqueWS") public class BanqueEjbImpl implements IBanqueLocal, IBanqueRemote { 33

34 Un client Web Service Et on récupère le fichier WSDL généré 34

35 Un client WS La chaine d'outil génère les stubs à partir du fichier WSDL public class DebitDan { public static void main(string args[]) { try { IBanqueRemoteProxy p = new IBanqueRemoteProxy(); IBanqueRemote b = p.getibanqueremote(); b.debit(1, 20); catch (Exception ex) { ex.printstacktrace(); 35

36 Entity beans (JPA) Représentent des objets dans la base de donnée Une classe correspond à une table Une instance correspond à une ligne dans cette table Un champ correspond à une colonne de la table Programmés comme des POJO (Plain Old Java Object) Pas d'héritage ou d'implantations spéciales Sont serialisables et peuvent être échangés avec les applications clientes Ce sont des Java Beans Implements java.io.serializable Possèdent un constructeur sans arguments Possèdent des setters / getters 36

37 Entity beans La classe doit être annotée Un champ annoté est la clé primaire qui sert d'identifiant unique dans la table Cette clé primaire peut être un type primitif ou de type objet Les autres champs peuvent être associés aux colonnes de la table Les champs sont utilisables au travers des accesseurs (getters/setters) On peut décrire l'association Entre le nom de la classe et le nom de la table Entre le nom d'un champ et le nom d'une colonne Mêmes noms par défaut La base de donnée peut être pré-existante ou générée 37

38 Annotation de mapping entre le bean et la Préciser le nom de la table associée à une classe. Par défaut, c'est le nom de la Préciser le nom de la colonne associée à un champ. Par défaut, c'est le nom du Déclarer un champ (donc une colonne) comme clé primaire de la Demander la génération automatique de la clé primaire par la BD (tag Demander à ne pas tenir compte d'un champ (par défaut tous les champs sont associés à des colonnes) 38

39 Entity public class Compte implements private int num; private String nom; private int solde; public Compte() { public Compte(String nom, int solde) { this.nom = nom; this.solde = solde; // num est généré // constructors, setters and getters 39

40 Gestion avec l'entitymanager EntityManager permet de gérer la private EntityManager em; Rendre un objet persistant dans la BD Compte c = new Compte() ; em.persist(c); Retrouver un objet à partir de sa clé primaire Compte c = em.find(compte.class, num); Retrouver un ou plusieurs objets avec une requête JPQL Il y a aussi des NativeQuery (SQL) TypedQuery<Compte> req = em.createquery("select c from Compte c", Compte.class); 40

41 Facade BanqueEjbImpl avec public class BanqueEjbImpl implements IBanqueLocal, IBanqueRemote private EntityManager em; public void addcompte(compte c) { em.persist(c); public List<Compte> consultercomptes() { TypedQuery<Compte> req = em.createquery("select c from Compte c", Compte.class); return req.getresultlist(); 41

42 Facade BanqueEjbImpl avec EntityManager public Compte consultercompte(int num) { Compte c = em.find(compte.class, num); if (c == null) throw new RuntimeException("Compte introuvable"); return c; public void debit(int num, int montant) { Compte c = consultercompte(num); if (c.getsolde()<montant) throw new RuntimeException("Solde insuffisant"); c.setsolde(c.getsolde()-montant); public void credit(int num, int montant) { Compte c = consultercompte(num); c.setsolde(c.getsolde()+montant);... 42

43 Etat des objets Objet Pas d'image dans la BD Objet attaché Objet géré dans le container EJB est associé à une image dans la BD Toute modification de l'objet est répercutée dans la BD Objet détaché Objet associé à une image dans la BD, mais plus géré par le container Surtout lorsqu'un objet attaché est sérialisé, sorti du container, modifié, puis repassé au Container Pour intégrer les modifications c = em.merge(c); Retourne l'objet attaché 43

44 Exécution avec JPA 44

45 Gérer les associations entre 45

46 @OneToMany (unidirectionnel) pk=primary key fk=foreign key Un Entity (Client) possède un champ Collection de références vers des instances (d'un autre Entity (Compte)) Exemple : un client a plusieurs public class GenerationType.IDENTITY) int id; String List<Compte> comptes; Peut être implanté par une fk ou une table de jointure (avec unicité pk public class GenerationType.IDENTITY) int id; int solde; public void ajoutcompte(int cli_id, Compte c) { em.persist(c); Client cli = em.find(client.class, cli_id); cli.getcomptes().add(c); 46

47 @ManyToOne (unidirectionnel) Un Entity (Compte) possède un champ référence vers une instance (d'un autre Entity (Client)) Exemple : un compte appartient à un client (qui peut en avoir plusieurs car plusieurs comptes peuvent avoir le même public class GenerationType.IDENTITY) int id; String public class GenerationType.IDENTITY) int id; int solde; public void ajoutcompte(int cli_id, Compte c) { em.persist(c); Client cli = em.find(client.class, cli_id); Client owner; 47

48 @OneToMany (bidirectionnel) Permet la navigation dans les 2 sens Exemple : un client a plusieurs comptes et un compte appartient à un public class GenerationType.IDENTITY) int id; String List<Compte> public class GenerationType.IDENTITY) int id; int Client owner; 48

49 @OneToMany (bidirectionnel) Le mappedby indique le champ correspondant à la relation dans l'autre Entity On dit que le coté opposé au mappedby (Compte) est le porteur de la relation On peut le faire dans l'autre sens, mais ce serait inefficace La mise à jour Doit être faite du coté du porteur de la relation (Compte) Elle est propagée de l'autre coté par le container (dans la liste de Client) public void ajoutcompte(int cli_id, Compte c) { em.persist(c); Client cli = em.find(client.class, cli_id); c.setowner(cli); 49

50 @OneToOne Unidirectionnel B1 doit pointer sur un B2 qui n'est pointé que par B1 Deux implantations possible : fk dans B1 ou B2 La BD ne vérifie pas forcément l'unicité de la fk JBoss ne semble pas le faire pour unidirectionnel Bidirectionnel Le schéma ci-dessous est utilisé (garantit unicité fk coté B2) // Compte compte; // Client owner; public void changercompte(int cli_id, Compte c) { em.persist(c) ; Client cli = em.find(client.class, cli_id); Compte old = cli.getcompte(); old.setowner(null); c.setowner(cli); sinon Exception 50

51 @ManyToMany Unidirectionnel Comme unidirectionnel (mais pas unicité du des 2 cotés sans mappedby correspond a 2 relations indépendantes des deux cotés Un porteur de l'association avec mappedby Forcément une table de jointure (peut être implanté sans table de jointure avec une fk pour unidirectionnel) Une mise à jour est effectuée du coté du porteur et propagée à l'autre coté 51

52 @ManyToMany // List<Compte> comptes; // List<Client> owners; public void partagercompte(int cli_id, int co_id) { Client cli = em.find(client.class, cli_id); Client co = em.find(compte.class, co_id); cli.getcompte().add(co); Le compte apparaît dans la liste comptes du client Le client apparaît dans la liste owners du compte 52

53 Cascades / Fetch Entity Manager permet d'appeler les opérations persist(), merge(), remove() (notamment) On peut contrôler la propagation de ces opérations sur les Entity référencés // List<Compte> comptes; Que se passe t-il lorsqu'un Entity est sérialisé (sorti du container), pour ses références aux autres Entity On peut contrôler le chargement des Entity // fetch=fetchtype.eager) List<Compte> comptes; Un client sérialisé aura une liste cohérente de comptes Par défaut FetchType.LAZY (chargement paresseux lors de l'utilisation) 53

54 Attention Il faut toujours utiliser les setter/getter pour affecter des champs (notamment pour le maintien des relations bidirectionnelles) Une instanciation n'est effective que lorsqu'on sort du container (notamment pour les créations, 54

55 Message Driven Beans Un EJB qui se comporte comme un Listener de messages JMS Sur une Queue ou un Topic Bean sans état (comme les Stateless) Le traitant d'un message a accès aux autres ressources (beans) Accroît les capacités d inter-opération avec les autres applications 55

56 Message Driven activationconfig = = "destination", propertyvalue = = "destinationtype", propertyvalue = "javax.jms.topic"), mappedname = "MyTopic") public class MyMDB implements MessageListener { public MyMDB() { public void onmessage(message message) { try { TextMessage textmsg = (TextMessage)message; // invoke a facade bean catch (Exception ex) {... 56

57 Les transactions Propriétés ACID Atomicity Un ensemble d'opérations dans une transaction sont exécutées en tout ou rien (commit ou rollback). Consistency Une transaction garantit l'intégrité des données (en cas de panne, pas d'état incohérent). Isolation L'exécution simultanée de transactions doit produire le même résultat qu'une exécution en série (on ne doit pas voir les états intermédiaires). Durabilité Les données commitées sont conservées de manière permanente. 57

58 Prise en compte des pannes Le programme client doit savoir ce qui s'est passé (commit/rollback) Traitement par l'application / rend compte à l'utilisateur (affichage) Panne du client : l'utilisateur devra vérifier plus tard par lui même Transactions gérées par le serveur Plante du serveur ou plante du réseau : le client ne sait pas ce qui s'est passé Transactions initiées par le client Plante du serveur ou plante du réseau : le client reçoit une Exception et annule la transaction (rollback) Seul cas délicat : plante pendant le commit 58

59 Programmation des transactions dans les EJB Modèle de transactions Transactions plates : une seule transaction à la fois (pour un client) Transactions imbriquées Un commit d'une transaction dépend du commit de la transaction englobante. Un rollback n'invalide que la transaction courante. On n'annule pas tout. Les EJB ne supportent que les transactions plates Trois manières de programmer les transactions dans les EJB Initiée par le client Par programmation au niveau d'un session bean De manière déclarative au niveau du container 59

60 Transaction initiée par le client Le programme client contient les appels à trans.begin(), trans.commit(), trans.rollback() Client EJB Container Session Bean Transaction Service 1. trans.begin() 2. Call 3. Call 4. Traitement 6. Result or Exception 5. Result or Exception 7. trans.commit() or trans.rollback() 60

61 Transaction initiée par le client (ex servlet) On récupère dans JNDI une référence à un objet gestionnaire de transaction (UserTransaction) // servlet Controller de l'application Banque Context ctx = new InitialContext(); UserTransaction trans = (UserTransaction)ctx.lookup("java:comp/UserTransaction"); trans.begin(); if (action.equals("debit")) facade.debit(num, montant); else facade.credit(num, montant); if (request.getparameter("trans").equals("commit")) trans.commit(); else trans.rollback(); 61

62 Transaction programmée dans un session bean Le session bean contient les appels à trans.begin(), trans.commit(), trans.rollback() Client EJB Container Session Bean Transaction Service 1. Call 2. Call 3. trans.begin() 4. Traitement 7. Result or Exception 6. Result or Exception 5. trans.commit() or trans.rollback() 62

63 Transaction programmée dans un session bean Le gestionnaire de transaction est donné par public class BanqueEjbImpl implements IBanqueLocal, IBanqueRemote UserTransaction trans; public void debit(int num, int montant, boolean commit) { try { trans.begin(); Compte c = consultercompte(num); if (c.getsolde()<montant) throw new RuntimeException("Solde insuffisant"); c.setsolde(c.getsolde()-montant); if (commit) trans.commit(); else trans.rollback(); catch (Exception e) { throw new RuntimeException(e.getCause()); 63

64 Transaction configurée au niveau du container Annotations des méthodes pour décrire leur comportement transactionnel Le container gère les transactions en fonction de ces attributs Client EJB Container Session Bean Transaction Service 1. Call 2. trans.begin() 3. Call 4. Traitement 5. Result or Exception 7. Result or Exception 6. trans.commit() or trans.rollback() 64

65 Transaction configurée au niveau du container Sur la classe C'est le mode par défaut Sur chaque méthode Attribut REQUIRED par défaut A chaque appel de méthode sur un bean (Session, Entity, ) Application de la gestion de transaction Les attributs TransactionAttributeType.NOT_SUPPORTED TransactionAttributeType.SUPPORTS TransactionAttributeType.REQUIRED TransactionAttributeType.REQUIRES_NEW TransactionAttributeType.MANDATORY TransactionAttributeType.NEVER 65

66 Transaction configurée au niveau du container Une transaction démarrée au début d'une méthode est commitée à la fin de la méthode TransactionAttributeType.REQUIRED (mode par défaut) La méthode doit être incluse dans une transaction Soit la transaction appelante Soit une nouvelle est créée TransactionAttributeType.REQUIRES_NEW Une nouvelle transaction est systématiquement démarrée La transaction appelante est suspendue La nouvelle transaction est commitée en sortie indépendamment de la transaction appelante (le commit de la nouvelle transaction est définitif) Ce n'est pas une transaction imbriquée 66

67 Transaction configurée au niveau du container TransactionAttributeType.MANDATORY La méthode doit être appelée dans le contexte d'une transaction appelante (sinon exception) TransactionAttributeType.NEVER La méthode ne doit pas être appelée dans le contexte d'une transaction appelante (sinon exception) TransactionAttributeType.NOT_SUPPORTED Si la méthode est appelée dans une transaction, elle est suspendue (le bean ne participe pas à la transaction) TransactionAttributeType.SUPPORTS Si la méthode est appelée dans une transaction, on y participe Si la méthode n'est pas appelée dans une transaction, on n'en crée pas 67

68 Java Transaction API (JTA) public interface javax.transaction.usertransaction { public void begin() ; public void commit() ; public int getstatus() ; public void rollback() ; public void setrollbackonly() ; public void settransactiontimeout(int); Dans une transaction gérée par le container commit automatique en fin de transaction setrollbackonly force le rollback en fin de transaction begin() : démarrer une transaction commit() : valider une transaction getstatus() : obtenir l'état d'une transaction Rollback() : annuler une transaction setrollbackonly() : imposer qu'une transaction soit annulée à sa terminaison (même si commit() est appelé) settransactiontimeout() : modifier le timeout de la transaction 68

69 Transaction - bilan Pour les Entity beans Forcément dans une transaction Les transactions sont forcément gérées par le container Pour les Session beans Soit par programmation (bean managed) Soit gestion par le container (container managed) Une transaction peut être initiés dans le client (lourd, servlet) 69

70 Synchronisation Entity Gestion par le container qui gère les transactions et la synchronisation Session Stateless : pas besoin de synchronisation (pas d'état) Statefull : pas besoin de synchronisation (un par client) Singleton Annotation 70

71 Niveaux d'isolation Définit le verrouillage et l'isolation des objets (donc des tables) impliqués dans les transactions Le container EJB s'appuie sur les BD pour l'assurer 3 type de violations Dirty reads T1 modifie un objet, T2 le lit, T1 rollback, T2 a lu une valeur inexistante Unrepeatable read T1 lit un objet, T2 modifie et commite cet objet, T1 relit et voit une valeur différente Phantom reads T1 fait une recherche, T2 ajoute de nouveaux objets, T1 refait la recherche et découvre les nouveaux objets 71

72 Niveaux d'isolation La spécification EJB définit 4 niveaux d'isolation TRANSACTION_READ_UNCOMMITED Autorise les dirty, unrepeatable et phantom reads TRANSACTION_READ_COMMITED Autorise les unrepeatable et phantom reads, pas les dirty TRANSACTION_REPETEABLE_READ Autorise les phantom reads, pas les dirty et les unrepeatable TRANSACTION_SERIALIZABLE N'autorise aucune violation, le plus restrictif Quel niveau choisir Par défaut : TRANSACTION_READ_COMMITED Satisfaisant pour la plupart des applications Propriétés ACID = TRANSACTION_SERIALIZABLE Très pénalisant pour les performances 72

73 Affecter le niveau d'isolation On doit accéder à la connexion à la BD Context ctx = new InitialContext(); DataSource ds = (DataSource)ctx.lookup("java:jboss/datasources/ExampleDS"); Connection c = ds.getconnection(); c.settransactionisolation(connection.transaction_serializable); 73

74 La sécurité : authentification et autorisation Repose sur JAAS (Java Authentication and Authorization Service) Un définit pour un session bean une politique de sécurité Définit une politique d'authentification et de contrôle d'accès Repose sur des usagers et des rôles Un usager peut être associé à un ensemble de rôles Dans un session bean, on associé un rôle à public class BanqueEjbImpl implements IBanqueLocal, IBanqueRemote public void addcompte(compte c) public List<Compte> consultercomptes() {... 74

75 La sécurité : authentification et autorisation Coté serveur Gestion par Jboss par défaut Il est possible de définir d'autres domaines Gestion des users et roles Dans une base de données Pratique : l'application web peut ajouter des users et des roles facilement Dans un annuaire LDAP Configuration un peu compliquée dans JBoss Coté client (lourd ou servlet) Il est possible d'authentifier (login) un usager On appelle une méthode login() Un callback permet de lui passer un nom et mot de passe on peut les avoir demandés interactivement (client lourd ou JSP) Le login est vérifié par le gestionnaire d'authentification 75

76 La sécurité : authentification et autorisation try { LoginContext lc = new LoginContext( "WebLogin", new MyCallBack() ); lc.login( ); catch (LoginException lge){ throw new RuntimeException("Login failed"); public class MyCallBack implements CallbackHandler { public void handle(callback[] callbacks) throws IOException, UnsupportedCallbackException { for (int i = 0; i < callbacks.length; i++) { if (callbacks[i] instanceof NameCallback) { NameCallback nc = (NameCallback)callbacks[i]; nc.setname("dan"); else if (callbacks[i] instanceof PasswordCallback) { PasswordCallback pc = (PasswordCallback)callbacks[i]; String pw = "xxxx"; pc.setpassword(pw.tochararray()); 76

77 L'essentiel Tomcat Jboss Postgres Entity bean table Servlet Session bean (facade) 1 n Entity @PersistenceContext new MyEntity em.persist() 77

78 L'essentiel public class Mngr EntityManager em; public void ajoutcompte ( String na, int nu, int ba) { Account a = new Account(nu,ba); em.persist(a); Person p = em.find(person.class,na); p.getlist().add(a); public class Person String name; String List<Account> list; 1 public class Account int num; int balance; Postgres Person name address Account num balance name 78

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

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

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

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i Développement JEE 5 avec Eclipse Europa K a r i m D j a a f a r A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i Groupe Eyrolles, 2008, ISBN : 978-2-212-12061-5 10 L API JPA et la

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

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

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

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

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

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

EXA1415 : Annotations JavaEE : @Local, @Stateful

EXA1415 : Annotations JavaEE : @Local, @Stateful EXA1415 : Annotations JavaEE : @Local, @Stateful Sur une idée de P. Sécheresse sur http://developpez.com (http://tinyurl.com/5gr57j) Diapo 1 Objectif Créer un EJB CalculatriceBean (V1) Contient une opération

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

EJB. Karim Bouzoubaa Issam Kabbaj

EJB. Karim Bouzoubaa Issam Kabbaj EJB Karim Bouzoubaa Issam Kabbaj Problématique html jsp Objets java jdbc table Pour accéder aux données : Établir une connexion avec la BD Envoyer une requête Traiter la requête Assurer l'intégrité Or

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

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

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

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

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

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

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

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

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

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

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

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

Aspects techniques : guide d interfaçage SSO

Aspects techniques : guide d interfaçage SSO COURDECO Aspects techniques : guide d interfaçage SSO Septembre 2011 Cette annexe présente succinctement le système d'authentification unique (SSO : single sign on, authentification unique) utilisé dans

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

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

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

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

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

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

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

Une introduction à la technologie EJB (2/3)

Une introduction à la technologie EJB (2/3) Une introduction à la technologie EJB (2/3) 1 Les singletons des EJB 3.1 1.1 Synchronisation gérée manuellement Depuis la version 3.1, des EJB Statless à instance unique sont maintenant disponibles : ce

Plus en détail

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. Encapsulation L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. La visibilité dépend des membres : certains membres peuvent être visibles et d'autres

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

Java pour le Web. Cours Java - F. Michel

Java pour le Web. Cours Java - F. Michel Java pour le Web Cours Java - F. Michel Introduction à JEE 6 (ex J2EE) Historique Qu'est-ce que JEE JEE : Java Entreprise Edition (ex J2EE) 1. Une technologie outils liés au langage Java + des spécifications

Plus en détail

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web»

Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web» Cours Master Recherche RI 7 Extraction et Intégration d'information du Web «Services Web» Sana Sellami sana.sellami@lsis.org 2014-2015 Plan Partie 1: Introduction aux Services Web (SW) Partie 2: Vers une

Plus en détail

Architecture applicative et Cartographie

Architecture applicative et Cartographie Architecture applicative et Cartographie Mineure SOA Idir AIT SADOUNE idir.aitsadoune@supelec.fr Programme 7 nov. 14 nov. 21 nov. Introduction. Enjeux, rôle de l'architecte SI Partie n 1 du cas d'étude

Plus en détail

Messagerie asynchrone et Services Web

Messagerie asynchrone et Services Web Article Messagerie asynchrone et Services Web 1 / 10 Messagerie asynchrone et Services Web SOAP, WSDL SONT DES STANDARDS EMERGEANT DES SERVICES WEB, LES IMPLEMENTATIONS DE CEUX-CI SONT ENCORE EN COURS

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

Remote Method Invocation Les classes implémentant Serializable

Remote Method Invocation Les classes implémentant Serializable Parallélisme Architecture Eric Goubault Commissariat à l Energie Atomique Saclay Classe qui implémente la méthode distante (serveur): - dont les méthodes renvoient un objet serializable - ou plus généralement

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

JavaServer Pages (JSP)

JavaServer Pages (JSP) JavaServer Pages (JSP) XVIII-1 Prérequis pour ce cours Ce cours a trait à la programmation Java coté serveur Il faut connaître un minimum de technologie J2EE Il faut connaître les servlets XVIII-2 Motivation

Plus en détail

J2EE. Java2 Enterprise Edition. Pierre Yves Gibello pierreyves.gibello@experlog.com Mise à jour : 30 Septembre 2004

J2EE. Java2 Enterprise Edition. Pierre Yves Gibello pierreyves.gibello@experlog.com Mise à jour : 30 Septembre 2004 J2EE Java2 Enterprise Edition Pierre Yves Gibello pierreyves.gibello@experlog.com Mise à jour : 30 Septembre 2004 Ce document est couvert par la licence Creative Commons Attribution ShareAlike. This work

Plus en détail

[APPLICATON REPARTIE DE VENTE AUX ENCHERES]

[APPLICATON REPARTIE DE VENTE AUX ENCHERES] 2012 Polytech Nice- Sophia El Hajji Khalil Yousfi Hichem SI4 - Log [APPLICATON REPARTIE DE VENTE AUX ENCHERES] Sommaire Architecture de l application... 3 Le Serveur... 3 Le Client... 4 Passage en CORBA...

Plus en détail

Nouvelles Plateformes Technologiques

Nouvelles Plateformes Technologiques Cycle de présentation du développement Nouvelles Plateformes Technologiques Observatoire Technologique, CTI Observatoire Technologique 4 mai 2004 p 1 Plan de la présentation 1. Historique du projet 2.

Plus en détail

Introduction aux «Services Web»

Introduction aux «Services Web» Introduction aux «Services Web» Sana Sellami sana.sellami@univ-amu.fr 2014-2015 Modalité de contrôle de connaissances Note de contrôle de continu Note projet Evaluation du projet la semaine du 17 novembre

Plus en détail

Formation en Logiciels Libres. Fiche d inscription

Formation en Logiciels Libres. Fiche d inscription République Tunisienne Ministère de l'industrie et la Technologie - Secrétariat d'état de la Technologie Unité des Logiciels Libres Formation en Logiciels Libres Fiche d inscription (Une fiche par candidat)

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

JOnAS Day 5.1. Clustering

JOnAS Day 5.1. Clustering JOnAS Day 5.1 Clustering Solution complète de clustering Répartition de charge & bascule sur échec Application Web avec mod_jk/mod_proxy Connecteur http pour md_proxy Application Ejb avec CMIv2 Réplication

Plus en détail

Composants logiciels Exemples : Java Beans, Enterprise Java Beans

Composants logiciels Exemples : Java Beans, Enterprise Java Beans Composants logiciels Exemples : Java Beans, Enterprise Java Beans Sacha Krakowiak Université Joseph Fourier Projet Sardes (INRIA et IMAG-LSR) http://sardes.inrialpes.fr/~krakowia Introduction : évolution

Plus en détail

Projet gestion d'objets dupliqués

Projet gestion d'objets dupliqués Projet gestion d'objets dupliqués Daniel Hagimont Daniel.Hagimont@enseeiht.fr 1 Projet Service de gestion d'objets dupliqués Mise en cohérence lors de la prise d'un verrou sur un objet Pas de verrous imbriqués

Plus en détail

JOnAS 5. Serveur d application d

JOnAS 5. Serveur d application d JOnAS 5 Serveur d application d dynamique Agenda En quelques mots Caractéristiques essentielles Zoom sur le versioning 2 Bull, 2008 Serveur d application dynamique JOnAS - Serveur d application Open Source

Plus en détail

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet TP Composants Java ME - Java EE Vous allez, dans ce TP, construire une architecture client serveur, plus précisément MIDlet cliente, servlet serveur. Pour cela, on va d'abord installer la partie serveur

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

TD sur JMS ---- 1) Qu est-ce qu un middleware orienté message (MOM)? Quelles différences faites-vous entre un MOM et JMS?

TD sur JMS ---- 1) Qu est-ce qu un middleware orienté message (MOM)? Quelles différences faites-vous entre un MOM et JMS? TD sur JMS ---- Questions de cours : 1) Qu est-ce qu un middleware orienté message (MOM)? Quelles différences faites-vous entre un MOM et JMS? MOM : Message Oriented Middleware Intergiciels orientés Messages

Plus en détail

Java EE. Java Enterprise Edition. Pierre-Yves Gibello - pierreyves.gibello@experlog.com (Mise à jour : Septembre 2011)

Java EE. Java Enterprise Edition. Pierre-Yves Gibello - pierreyves.gibello@experlog.com (Mise à jour : Septembre 2011) Java EE Java Enterprise Edition Pierre-Yves Gibello - pierreyves.gibello@experlog.com (Mise à jour : Septembre 2011) Ce document est couvert par la licence Creative Commons Attribution-ShareAlike. This

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

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

Le passage à l échelle de serveur J2EE : le cas des EJB

Le passage à l échelle de serveur J2EE : le cas des EJB Le passage à l échelle de serveur J2EE : le cas des EJB Sylvain Sicard, Noël De Palma, Daniel Hagimont CFSE 4 5-8 Avril 2005 LSR 1 Plan de la présentation 1. Architecture de serveur J2EE en grappe 2. Problématique

Plus en détail

Ré-architecture et migration d une application standalone vers un serveur applicatif multi-tiers dans un contexte JAVA-SAP

Ré-architecture et migration d une application standalone vers un serveur applicatif multi-tiers dans un contexte JAVA-SAP Ré-architecture et migration d une application standalone vers un serveur applicatif multi-tiers dans un contexte JAVA-SAP Ionel Dembski Sous la direction de Peter Daehne, Professeur HES Département d

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

Calcul Parallèle. Cours 5 - JAVA RMI

Calcul Parallèle. Cours 5 - JAVA RMI Calcul Parallèle Cours 5 - JAVA RMI Eric Goubault Commissariat à l Energie Atomique & Chaire Ecole Polytechnique/Thalès Saclay Le 28 février 2012 Eric Goubault 1 28 février 2012 Remote Method Invocation

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

Projet. But: consultation en temps réel d événements (cours de bourse, trafic d envoi SMS ) sur des téléphones portables. Serveur de diffusion

Projet. But: consultation en temps réel d événements (cours de bourse, trafic d envoi SMS ) sur des téléphones portables. Serveur de diffusion Projet But: consultation en temps réel d événements (cours de bourse, trafic d envoi SMS ) sur des téléphones portables événements Serveur de diffusion 1 JMS Java Message Service PHAN Quang-Hai ISTR 04/05/2004

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

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

4. SERVICES WEB REST 46

4. SERVICES WEB REST 46 4. SERVICES WEB REST 46 REST REST acronyme de REpresentational State Transfert Concept introduit en 2000 dans la thèse de Roy FIELDING Est un style d architecture inspiré de l architecture WEB En 2010,

Plus en détail

Chapitre 10. Les interfaces Comparable et Comparator 1

Chapitre 10. Les interfaces Comparable et Comparator 1 Chapitre 10: Les interfaces Comparable et Comparator 1/5 Chapitre 10 Les interfaces Comparable et Comparator 1 1 Ce chapitre a été extrait du document "Objets, Algorithmes, Patterns" de [René Lalement],

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

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

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework Gaël de Chalendar CEA LIST / LIC2M Journée de Présentation des Technologies WebContent INSTN 14/12/2009 Présentation de gsoap Plan

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

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

Documentation de la plate forme JOnAS. Frederic Maistre

Documentation de la plate forme JOnAS. Frederic Maistre Documentation de la plate forme JOnAS Frederic Maistre Documentation de la plate forme JOnAS Table des matières Documentation JOnAS...1 Java Open Application Server (JOnAS): une Plate forme J2EETM...3

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

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

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

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

Documentation de la plate forme JOnAS

Documentation de la plate forme JOnAS Documentation de la plate forme JOnAS Documentation de la plate forme JOnAS Table des matières Documentation JOnAS...1 Java Open Application Server (JOnAS): une Plate forme J2EETM...3 Introduction...3

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

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

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

Remote Method Invocation en Java (RMI)

Remote Method Invocation en Java (RMI) Remote Method Invocation en Java (RMI) Modélisation et construction des applications réparties (Module M-4102C) J. Christian Attiogbé Fevrier 2015 J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation

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

Java et les annotations

Java et les annotations Java et les annotations Cnam Paris jean-michel Douin version du 6 Octobre 2014 Notes de cours sur les annotations 1 Sommaire Les prédéfinies Annotation pour une meilleure productivité Annotations comme

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

La base de données XML exist. A. Belaïd

La base de données XML exist. A. Belaïd La base de données XML exist Introduction Qu est-ce-que exist? C est une base de donnée native, entièrement écrite en Java XML n est pas une base de données en soi Bien qu il possède quelques caractéristiques

Plus en détail

GECKO Software. Introduction à MOBIDICK. Modular But Integrated Application Framework

GECKO Software. Introduction à MOBIDICK. Modular But Integrated Application Framework Introduction à MOBIDICK Modular But Integrated Application Framework MOBIDICK 3 Standard Edition Community & Enterprise Principaux avantages et fonctionnalités GECKO Software http://consulting.bygecko.com

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

Evaluation Idéopass Cahier d analyse technique

Evaluation Idéopass Cahier d analyse technique Evaluation Idéopass Cahier d analyse technique Version 1 GMSIH 374, rue de Vaugirard 75015 Paris. Tel : 01 48 56 72 70. Fax : 01 48 56 07 70 Auteur(s) du document : Contrôle Qualité GMSIH Date : 17/03/2005

Plus en détail

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010 ORACLE 10G DISTRIBUTION ET REPLICATION Distribution de données avec Oracle G. Mopolo-Moké prof. Associé UNSA 2009/ 2010 1 Plan 12. Distribution de données 12.1 Génération des architectures C/S et Oracle

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

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

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

Conception de serveurs d'applications ouverts

Conception de serveurs d'applications ouverts Conception de serveurs d'applications ouverts Stéphane Frénot 3 Un modèle d'exécution standard Application Stéphane Frénot 4 1 Répartition "horizontale" d'une application Application de Présentation Application

Plus en détail