cours_JEE_1.pdf

download cours_JEE_1.pdf

of 93

Transcript of cours_JEE_1.pdf

  • 8/10/2019 cours_JEE_1.pdf

    1/93

    1

    Cration dune application JEE

    Rdacteurs: Alexandre Baillif, Philippe Lacomme, Raksmey Phan et Michal PLANDate: juillet 2010

    Mise jour : Michal PLANDate: octobre 2014

    Avertissement :- ce document est une reprise dune partie dun document crit par Serge Tah. En particulier labase de donnes utilise.- une mise jour important a t faire par Michael Plan ([email protected])

    Ce support de cours concerne la mise en place dune application JEE avec un client.

    La prsentation comprend 5 parties :Partie 1. Cration dune base de donnes sous MySQL.Partie 2. Cration dun conteneur EJBPartie 3. Cration un conteneur Web pour accder lEJBPartie 4. Cration dune Entreprise Application Partie 5. Cration dun client web.

    La base de donnes sappellera base_medecin.

    JDBC: cette couche gre la connexion avec la (ou les) base(s) de donnes. Ici on utilisera la notionde pool de connexion. Un pool de connexion est un ensemble de connexions avec la base dedonnes dj instancies. Cela permet aux requtes de sexcuter plus rapidement. On peut venirconnecter plusieurs couches JPA sur la couche JDBC si ncessaire.

    JPA : la couche JPA (Java Persistence Annotation) est une couche dabstraction de la coucheJDBC. Elle permet notamment de faire du Mapping Relationnel-Objet (ORM, Object-RelationnalMapping en anglais) qui consiste modliser la base de donnes sous forme dobjets pour unemanipulation plus simple travers le code Java (requtes pr-crites, gestion des liens entre lestables,). Gnralement la couche JPA contient une classe (entit) par table, des contrleurs(fonctions de base implmentes) et des gestionnaires dexceptions.

    DAO : Cette couche reprsente lintelligence de lapplication. Elle est compose dun ensembledinterfaces locales (local) et distantes (remote). Les DAO (Data Access Object) permettent

  • 8/10/2019 cours_JEE_1.pdf

    2/93

    2

    daccder aux objets et proposent des mthodes de CRUD (Create, Read, Update, Delete). Un EJB(Entreprise Java Bean) sera pilot partir dune autre application distante ou locale (client EJB).

    Web Services: Cette couche a pour but de dfinir des services qui pourront tre appels selon leprotocole SOAP. Ainsi les informations pourront circuler entre les applications sous forme demessages XML. Cela peut servir faire communiquer deux applications qui peuvent tre codes

    dans deux langages diffrents, en local ou distance.

    Partie 1. Cration dune base de donnes MySQL

    Figure 1: Base de donne finale

  • 8/10/2019 cours_JEE_1.pdf

    3/93

    3

    1) Tlchargement de MySQL

    Nous utilisons une base de donnes MySQL.Site : http://www.mysql.com/Utiliser la section Download.

    Choisir ensuite votre systme dexploitation. Par exemple Windows 32 bits et lancer letlchargement.

    Aprs un questionnaire (un peu long ) vous demandant de vous identifier, vous pourrez accder la page de tlchargement.

  • 8/10/2019 cours_JEE_1.pdf

    4/93

    4

    Ou vous pouvez cliquer sur le lien No thanks, just take me to the downloads!

    Le fichier tlcharge se prsente comme suit :

    1.2. Installation de MySQL

    Conserver les rglages par dfautet valider les diffrents cransdinstallation.

    Utiliser le compteroot

    et le motde passe admin.

  • 8/10/2019 cours_JEE_1.pdf

    5/93

    5

    Remarquons que pendant linstallation, nous avons accs au numro de port (par dfaut 3309).

    Si linstallation se passe bien elle devrait se terminer par lcran qui suit :

  • 8/10/2019 cours_JEE_1.pdf

    6/93

    6

    1.3. Tlchargement et Installation de MySQL WorkBench

    Cet outil nest pas indispensable mais trs efficace et permet de manipuler MySQL de manire trssimple. Il est vivement recommand de linstaller. Cette interface graphique est en fait une couchede manipulation de MySQL.

  • 8/10/2019 cours_JEE_1.pdf

    7/93

    7

    Lancer linstallation

    1.4. Ensemble des outils MySQL

    Dans le menu Dmarrer, dans le sous-menu MySQL se trouvent :- WorkBench- MySQL Serveur.

  • 8/10/2019 cours_JEE_1.pdf

    8/93

    8

    1.4. Cration dune base de donnes

    Crer une nouvelle base en utilisant : File /

    New Model.

    Faire Enregistrer Sous et choisir un rpertoire :

  • 8/10/2019 cours_JEE_1.pdf

    9/93

    9

    En cliquant sur Add Table on peut ajouter une table qui par dfaut porte le nom table1.

  • 8/10/2019 cours_JEE_1.pdf

    10/93

    10

    Modifions ensuite le nom de la table en EMPLOYE et validons. Nous pouvons ensuite facilementajouter les champs NOM, PRENOM et AGE.

    Sauvegarder le modle.

  • 8/10/2019 cours_JEE_1.pdf

    11/93

    11

    1.5. Cration dune base de donnes laide dun script

    Revenez dans longlet Home . Faites New Connection .

    Utilisez le numro de port par dfaut donn lors de linstallation de MySQL (3306, 3309,).Puis tester la connexion.

  • 8/10/2019 cours_JEE_1.pdf

    12/93

    12

    Au retour sur lcran principal, double-cliquez sur localhost . Une nouvelle fentre de SQLQuery souvre.

    Faire un clic droit sur la colonne de gauche et choisir Create Schema.

  • 8/10/2019 cours_JEE_1.pdf

    13/93

    13

    Donner un nom la base de donnes : par exemple base_medecin.

    Valider les diffrentes tapes. La base_medecinapparat ensuite dans la colonne de gauche.

    En utilisant la deuxime icne de la barre du haut, ouvrir un script.

  • 8/10/2019 cours_JEE_1.pdf

    14/93

  • 8/10/2019 cours_JEE_1.pdf

    15/93

  • 8/10/2019 cours_JEE_1.pdf

    16/93

    16

    1.6) Tlcharger et Installer Netbeans

    Avant de tlcharger Netbeans, il est important dinstaller un JDK sur sa machine. Il sagit dunensemble de librairie Java pour le dveloppement.Pour ce tutorial, nous avons utilis la version 1.6.21 du JDK :fc.isima.fr/~phan/WebService/jdk-6u21-windows-i586.zip

    Comme utilitaire de dveloppement, nous allons utiliser NetBeans 6.9. Il sera ncessaire davoir auminimum la version Java(avec le serveur Glassfish intgr).Lien pour le tlchargement :fc.isima.fr/~phan/WebService/netbeans-6.9-ml-java-windows.exe.zip

    Suivez le guide dinstallation jusqu lendroit o lon vous demande de choisir un rpertoiredinstallation de Glassfish. ce moment l prenez soin de prciser un chemin daccs sansespace. Pour les utilisateurs de Windows nous conseillons : C:\glassfish3 (Ceci permettradviter un bug des versions rcentes de Glassfish et Java).

  • 8/10/2019 cours_JEE_1.pdf

    17/93

    17

    1.7) Configurer Netbeans

    Dmarrer NetBeans. Aller dans Services.En fonction de la machine sur laquelle vous tes, de la version de Netbeans et de Glassfish ainsi quedes ventuelles bases de donnes dj installes vous devriez obtenir quelque chose ressemblant ce qui se trouve ci-dessous :

    Sous Windows 7, Netbeans 6.8et Glassfish V3

    Sous Windows XP, Netbeans 6.9et Glassfish V3

    Dans la section Drivers, choisir MySQL et par un clic droit faire Connect Using.

  • 8/10/2019 cours_JEE_1.pdf

    18/93

    18

    Et choisir la base base_medecin.

  • 8/10/2019 cours_JEE_1.pdf

    19/93

    19

    Si la connexion russie, on obtient alors :

  • 8/10/2019 cours_JEE_1.pdf

    20/93

    20

    Partie 2. Cration dun EJB

    Nous venons de crer la base de donnes et de configurer la partie SGBD. Nous nous intressons la dfinition du conteneur EJB.

    2.1. Cration dun conteneur EJB

    Crer un nouveau projetEJB Module qui se nomme EJBModule1.

  • 8/10/2019 cours_JEE_1.pdf

    21/93

    21

  • 8/10/2019 cours_JEE_1.pdf

    22/93

    22

    2.2. Cration dune ressource JDBC au serveur Glassfish

    Il sagit de la premire tape.

  • 8/10/2019 cours_JEE_1.pdf

    23/93

    23

    Maintenant nous allons donner un nom JNDI (Java Naming and Directory Interface) notreressource. Ce nom sera celui utilis par le serveur dapplication pour retrouver la ressource.Afin dviter toute confusion, le nom JNDI serajdbc/base_medecin_JNDI:

  • 8/10/2019 cours_JEE_1.pdf

    24/93

  • 8/10/2019 cours_JEE_1.pdf

    25/93

    25

    Si on examine le fichier sun-resources.xml, on trouve toute les informations de connexion la base.

  • 8/10/2019 cours_JEE_1.pdf

    26/93

  • 8/10/2019 cours_JEE_1.pdf

    27/93

    27

    2.3. Cration dune unit de persistance

    Il sagit de la deuxime tape.

    Elle va configurer la couche JPA. Dans notre cas, nous allons utiliser limplmentation propose parEclipse.

    Dans un premier temps nous allons crer une unit de persistance (faire Clic Droit surEJBModule1 et choisir New->Others).

    Choisir ensuite comme Data Source : base_medecin_JNDI.Comme fournisseur de service de persistance EclipseLink.

  • 8/10/2019 cours_JEE_1.pdf

    28/93

    28

    Attention ne pas choisir une stratgie englobant la gnration des tables. Elles existent dj grceau script SQL que nous avons utilis au dpart.

  • 8/10/2019 cours_JEE_1.pdf

    29/93

    29

    Dans la partie Configuration Files , le fichier persistence.xmlapparat.

    org.eclipse.persistence.jpa.PersistenceProvider

    jdbc/base_medecin_JNDI

    false

    Vrifier que le contenu du fichier persentence.xml est comme suit :

  • 8/10/2019 cours_JEE_1.pdf

    30/93

    30

    Dans un deuxime temps, nous allons crer des entits JPA. Comme prcdemment faire ClicDroit / New / Other.

  • 8/10/2019 cours_JEE_1.pdf

    31/93

    31

  • 8/10/2019 cours_JEE_1.pdf

    32/93

    32

  • 8/10/2019 cours_JEE_1.pdf

    33/93

    33

    Etant donn quil sagit de la gnration dentits JPA, on peut choisirjpacomme nom de package.

    Veuillez bien choisir java.util.List pour Collection Type (pour avoir plus de lisibilit).

  • 8/10/2019 cours_JEE_1.pdf

    34/93

  • 8/10/2019 cours_JEE_1.pdf

    35/93

    35

    Clients.java

    Medecins.java

    Creneaux.java

    2.4. Cration dune classe spciale de traitement des exceptions

    Crer un nouveau package nomm par exemple medecin.exception.

    Dans ce package, crer ensuite une classe java nomm par exemple : MedecinException.

  • 8/10/2019 cours_JEE_1.pdf

    36/93

    36

    Le code de cette classe pourrait tre celui-ci :

    package medecin.exception;

    import javax.ejb.ApplicationException;

    @ApplicationException(rollback=true)

    public class MedecinException extends RuntimeException {

    // champs privs

    private int code = 0;

    // constructeurs

    public MedecinException() {

    super();

    }

    public MedecinException(String message) {

    super(message);

    }

    public MedecinException(String message, Throwable cause) {

    super(message, cause);

    }

    public MedecinException(Throwable cause) {

    super(cause);

    }public MedecinException(String message, int code) {

    super(message);

    setCode(code);

    }

    public MedecinException(Throwable cause, int code) {

    super(cause);

    setCode(code);

    }

    public MedecinException(String message, Throwable cause, int code) {

    super(message, cause);

    setCode(code);

    }

    // getters and setters

    public int getCode() {

    return code;

    }

    public void setCode(int code) {

    this.code = code;

    }

    }

  • 8/10/2019 cours_JEE_1.pdf

    37/93

    37

    2.4.bis Cration dun nouveau projet (Ajout de Michael Plan)

    Crer un nouveau Projet Java Class Library

    Larchitecture obtenue est alors la suivante :

  • 8/10/2019 cours_JEE_1.pdf

    38/93

    38

    Faire glisser le package jpa dans le dossier Packages de sources du projet JavaLibrary4 ,pour obtenir larborescence suivante (ne pas faire attention aux erreurs) :

    Ajouter la rfrence du projet JavaLibrary4 dans le projet EJBModule2 . Pour cela, faire clic droit sur EJBModule2 > Proprits

  • 8/10/2019 cours_JEE_1.pdf

    39/93

    39

    Cliquer sur Add Project et slectionner JavaLibrary4

    Cliquer sur OK

  • 8/10/2019 cours_JEE_1.pdf

    40/93

  • 8/10/2019 cours_JEE_1.pdf

    41/93

    41

  • 8/10/2019 cours_JEE_1.pdf

    42/93

    42

  • 8/10/2019 cours_JEE_1.pdf

    43/93

    43

    Le projet se prsente alors comme suit :

  • 8/10/2019 cours_JEE_1.pdf

    44/93

    44

    Cet ensemble de classes, contient des interfaces distantes et locales pour implmenter les mthodesdu CRUD. Rappelons que CRUD dsigne les quatre oprations de base pour la persistance desdonnes, en particulier le stockage d'informations en base de donnes. Soit : Create, Read (ou

    Retrieve), Update et Delete (ou Destroy).

    Enfin nous allons crer un package nomme dao, qui reprsente linterface de lEJB pour laccsaux donnes.

  • 8/10/2019 cours_JEE_1.pdf

    45/93

    45

    Le projet se prsente alors comme suit :

  • 8/10/2019 cours_JEE_1.pdf

    46/93

    46

    Ajoutons une Session Beandans le package dao. Cette interface va permettre davoir plusieursmthodes sur une seule interface (contrairement aux classes du package ejb qui sont en fait uneinterface par entit).

    Demandons en plus une interface locale et distante de type stateless.

    Rappels :

    Stateless : Ltat du Bean nest pas conserv. Sa dure de vie correspond la dure de vie dunerequteutilisateur (ex : Calculatrice).Stateful : Ltat du Bean est conserv. Sa dure de vie correspond la dure de vie dune sessionutilisateur (ex : Panier dachat).

  • 8/10/2019 cours_JEE_1.pdf

    47/93

    47

  • 8/10/2019 cours_JEE_1.pdf

    48/93

    48

    Fusionner maintenant les packages dao et ejb du projet JavaLibrary4 dans les packages demmes noms de EJBModule2 (dragndrop de leur contenu).De la mme faon, dplacer le package jpa depuis JavaLibrary4 vers EJBModule2.

    Supprimer la library JavaLibrary4 dans les proprits du module EJBModule2

    Nous allons complexifier un peu ce schma :- en ajoutant une nouvelle classe java DaoJpaqui contiendra une implmentation de IdaoLocalet

    IdaoRemote- en considrant que le fichier Idaoest juste une interface.

  • 8/10/2019 cours_JEE_1.pdf

    49/93

    49

    Ainsi le package Dao contient 4 fichiers comme indiqus ci-dessous :

  • 8/10/2019 cours_JEE_1.pdf

    50/93

    50

    Le fichier Idao.java

    package dao;

    import java.util.*;

    import jpa.*;

    public interface Idao {

    // liste des clients

    public List getAllClients();

    // liste des Mdecins

    public List getAllMedecins();

    // liste des crneaux horaires d'un mdecin

    public List getAllCreneaux(Medecins medecin);

    // liste des Rv d'un mdecin, un jour donn

    public List getRvMedecinJour(Medecins medecin, String jour);

    // trouver un client identifi par son id

    public Clients getClientById(Long id);

    // trouver un client idenbtifi par son id

    public Medecins getMedecinById(Long id);

    // trouver un Rv identifi par son id

    public Rv getRvById(Long id);

    // trouver un crneau horaire identifi par son id

    public Creneaux getCreneauById(Long id);

    // ajouter un RV

    public Rv ajouterRv(String jour, Creneaux creneau, Clients client);

    // supprimer un RV

    public void supprimerRv(Rv rv);

    }

    IdaoLocal.java

    package dao;

    import javax.ejb.Local;

    @Local

    public interface IdaoLocal extends Idao{

    }

    IdaoRemote.java

    package dao;

    import javax.ejb.Remote;

    @Remote

    public interface IdaoRemote extends Idao {

    }

    DaoJpa.java

    package dao;

    import javax.ejb.Stateless;

    import javax.*;

    import jpa.*;

    import java.util.*;

    import javax.ejb.*;

    import javax.persistence.*;

    import java.text.*;

    //import javax.transaction.Transaction;

    import medecin.exception.*;

    @Stateless(mappedName = "Interface")

    @TransactionAttribute(TransactionAttributeType.REQUIRED)

    public class DaoJpa implements IdaoLocal, IdaoRemote {

  • 8/10/2019 cours_JEE_1.pdf

    51/93

    51

    @PersistenceContext

    private EntityManager em;

    // liste des clients

    public List getAllClients() {

    try {

    return em.createQuery("select c from Clients c").getResultList();

    } catch (Throwable th) {

    throw new MedecinException (th, 1);

    }

    }

    // liste des mdecins

    public List getAllMedecins() {

    try {

    return em.createQuery("select m from Medecins m").getResultList();

    } catch (Throwable th) {

    throw new MedecinException (th, 2);

    }

    }

    // liste des crneaux horaires d'un mdecin donn

    // medecin : le mdecinpublic List getAllCreneaux(Medecins medecin) {

    try {

    return em.createQuery("select c from Creneaux c join c.medecin m where

    m.id=:idMedecin").setParameter("idMedecin", medecin.getId()).getResultList();

    } catch (Throwable th) {

    throw new MedecinException (th, 3);

    }

    }

    // liste des Rv d'un mdecin donn, un jour donn

    // medecin : le mdecin

    // jour : le jour

    public List getRvMedecinJour(Medecins medecin, String jour) {

    try {

    return em.createQuery("select rv from Rv rv join rv.creneau c join c.medecin m where

    m.id=:idMedecin and rv.jour=:jour").setParameter("idMedecin", medecin.getId()).setParameter("jour",new SimpleDateFormat("yyyy:MM:dd").parse(jour)).getResultList();

    } catch (Throwable th) {

    throw new MedecinException (th, 4);

    }

    }

    // ajout d'un Rv

    // jour : jour du Rv

    // creneau : crneau horaire du Rv

    // client : client pour lequel est pris le Rv

    public Rv ajouterRv(String jour, Creneaux creneau, Clients client) {

    try {

    Rv rv = new Rv(new SimpleDateFormat("yyyy:MM:dd").parse(jour), client, creneau);

    em.persist(rv);

    return rv;

    } catch (Throwable th) {

    throw new MedecinException (th, 5);

    }

    }

    // suppression d'un Rv

    // rv : le Rv supprim

    public void supprimerRv(Rv rv) {

    try {

    em.remove(em.merge(rv));

    } catch (Throwable th) {

    throw new MedecinException (th, 6);

    }

    }

    // rcuprer un client donn

    public Clients getClientById(Long id) {

    try {return (Clients) em.find(Clients.class, id);

    } catch (Throwable th) {

    throw new MedecinException (th, 7);

    }

  • 8/10/2019 cours_JEE_1.pdf

    52/93

    52

    }

    // rcuprer un mdecin donn

    public Medecins getMedecinById(Long id) {

    try {

    return (Medecins) em.find(Medecins.class, id);

    } catch (Throwable th) {

    throw new MedecinException (th, 8);

    }

    }

    // rcuprer un Rv donn

    public Rv getRvById(Long id) {

    try {

    return (Rv) em.find(Rv.class, id);

    } catch (Throwable th) {

    throw new MedecinException (th, 9);

    }

    }

    // rcuprer un crneau donn

    public Creneaux getCreneauById(Long id) {

    try {

    return (Creneaux) em.find(Creneaux.class, id);

    } catch (Throwable th) {

    throw new MedecinException (th, 10);

    }}

    }

    Avant de compiler assurez-vous que leslibrairies EclipseLink sont incluses dans leprojet :

    Dautre part, il faut inclure la librairie MySQL :

    Enfin il faut crer un fichier de configuration de JNDI nomm : jndi.properties.Le plus simple est de crer un package nomm Configuration.Ensuite il suffit de faire Clic Droit / New / Others / empty File

  • 8/10/2019 cours_JEE_1.pdf

    53/93

    53

    Le fichier cr doit contenir le texte suivant :

    java.naming;factory.initial = com.sun.enterprise.naming.SerialInitContextFactory

    java.naming.factory.url.pkgs = com.sun.enterprise.naming

    java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl

    Finalement, dans le projet, on obtient :

  • 8/10/2019 cours_JEE_1.pdf

    54/93

    54

    4) Dploiement de lEJB

    4.1. Vrifier les proprits : Clic Droit, Properties

  • 8/10/2019 cours_JEE_1.pdf

    55/93

    55

    4.3. Dployer

    Il faudra peut-tre autoriser le programme sexcuter dans votre rseau.

    Ensuite, le dploiement a russi et on peut constater que lEJB a t ajout la partie Applicationsdu serveur Glassfish.

  • 8/10/2019 cours_JEE_1.pdf

    56/93

    56

  • 8/10/2019 cours_JEE_1.pdf

    57/93

    57

    Partie 3. Cration dun Web Service

    3.1. Cration du projet

    Crer une application web. Menu File, New Project.

    Choisir comme nom par exemple WebApplication1 :

  • 8/10/2019 cours_JEE_1.pdf

    58/93

    58

    Parmi les frameworks installs vous pouvez par exemple choisir Java Server Faces ou ne rienchoisir (il ny aura pas dexemple dutilisation du framework dans ce tutorial).

    3.2. Utilisation de lEJB

    Faire un clic droit sur la partie librairies de lapplication Web et choisir Add Jar Choisir ensuite EJBModule1.jar.

  • 8/10/2019 cours_JEE_1.pdf

    59/93

    59

    Le projet WebApplication1 devrait se prsenter comme suit :

    Nous allons crer le web service en faisant new / Web Service.

    Il est possible de stocker cette classe dans un package rendezvouspar exemple.

  • 8/10/2019 cours_JEE_1.pdf

    60/93

    60

    Utilisez le bouton parcourir pour slectionner linterface sur laquelle on va crer le service web.

    Slectionner DaoJpa.

  • 8/10/2019 cours_JEE_1.pdf

    61/93

    61

    Utilisons comme nom WSDaoJpa.Valider le choix pour revenir la dfinition du web service.

  • 8/10/2019 cours_JEE_1.pdf

    62/93

    62

    Pour crer le web service, nous allons faire une couche devant la partie DaoJpa de lEJB. Rappelonsque la partie DaoJpacontient un ensemble de mthodes contrlant laccs aux donnes.

    A titre dexemple, le web service peut se prsenter comme suit :

  • 8/10/2019 cours_JEE_1.pdf

    63/93

    63

    package rendezvous;

    import javax.ejb.EJB;

    import javax.jws.*;

    import jpa.*;

    import dao.*;

    import dao.IdaoLocal;

    import java.util.*;

    @WebService()

    public class WSDaoJpa implements Idao {

    @EJB

    private IdaoLocal dao;

    // web service numero 1

    // liste des clients

    @WebMethod

    public List getAllClients() {

    return dao.getAllClients();

    }

    // web service numero 2

    // liste des clients

    @WebMethod

    public List getAllMedecins() {

    return dao.getAllMedecins();

    }

    // liste des crneaux horaires d'un mdecin donn

    // medecin : le mdecin

    @WebMethod

    public List getAllCreneaux(Medecins medecin) {

    return dao.getAllCreneaux(medecin);

    }

    // liste des Rv d'un mdecin donn, un jour donn

    // medecin : le mdecin, jour : le jour

    @WebMethod

    public List getRvMedecinJour(Medecins medecin, String jour) {

    return dao.getRvMedecinJour(medecin, jour);

    }

    // ajout d'un Rv, jour : jour du Rv// creneau : crneau horaire du Rv, client : client pour lequel est pris le Rv

    @WebMethod

    public Rv ajouterRv(String jour, Creneaux creneau, Clients client) {

    return dao.ajouterRv(jour, creneau, client);

    }

    // suppression d'un Rv, rv : le Rv supprim

    @WebMethod

    public void supprimerRv(Rv rv) {

    dao.supprimerRv(rv);

    }

    // rcuprer un client donn

    @WebMethod

    public Clients getClientById(Long id) {

    return dao.getClientById(id);

    }

    // rcuprer un mdecin donn

    @WebMethod

    public Medecins getMedecinById(Long id) {

    return dao.getMedecinById(id);

    }

    // rcuprer un Rv donn

    @WebMethod

    public Rv getRvById(Long id) {

    return dao.getRvById(id);

    }

    // rcuprer un crneau donn

    @WebMethod

    public Creneaux getCreneauById(Long id) {return dao.getCreneauById(id);

    }

    }

  • 8/10/2019 cours_JEE_1.pdf

    64/93

    64

    3.3. Test du web service

    Vrifier que ni lEJB ni la web application nest dploy dans les services. Si ce nest pas le cas,supprimer toutes les applications dployes.

    Compiler la web application.

    Puis dployer la web application.

  • 8/10/2019 cours_JEE_1.pdf

    65/93

    65

    Puis, faire un clic droit sur WsDaoJpadans le projet WebApplication1. Choisir Test WebService.

    Ceci permet de tester les web services directement partir dun navigateur !

  • 8/10/2019 cours_JEE_1.pdf

    66/93

  • 8/10/2019 cours_JEE_1.pdf

    67/93

    67

    Avec la rponse SOAP :

  • 8/10/2019 cours_JEE_1.pdf

    68/93

    68

    Il peut arriver que cette partie ne fonctionne pas soit parce que vous navez pasdploy correctement, soit parce que le port est dj utilis par une autreapplication. Dans ces cas, vous aurez le message suivant

    Si cest un problme de dploiement, il faut vrifier tous les paramtres prcdemment entrs. Sicest un problme de port, il suffit de changer le port de glassfish.Pour sassurer que cest bien un problme de port, on va entrer localhost:8080 (cf. messagederreur) dans un navigateur.

  • 8/10/2019 cours_JEE_1.pdf

    69/93

    69

    Par exemple, nous avons obtenu ceci sur une machine de test :

    Cela indique que le port est occup par oracle. Il faut donc dire Glassfish dutiliser un autre port.

    Ajouter un nouveau serveur :

    Et entrer un nom du nouveau domaine :

  • 8/10/2019 cours_JEE_1.pdf

    70/93

    70

    Puis valider les options par dfaut.

    On retrouve ce serveur dans la liste des serveurs Glassfish disponibles :

    En regardant dans la proprit des serveurs, on remarque que le nouveau domaine nutilise plus le

    port 8080 :

    Il faut alors configurer le web service pour quil utilise le nouveau serveur (et pareillement pour lesautre applications si besoin).

  • 8/10/2019 cours_JEE_1.pdf

    71/93

    71

  • 8/10/2019 cours_JEE_1.pdf

    72/93

    72

    Ensuite reconfigurer lEJB pour quil utilise le mme nouveau serveur glassfish.

  • 8/10/2019 cours_JEE_1.pdf

    73/93

    73

    Enfin, redployer le web service.A moins que le nouveau port soit aussi utilis, normalement, vous navez plus de problme de port.

  • 8/10/2019 cours_JEE_1.pdf

    74/93

    74

    Partie 4. Cration dune EntrepriseApplication

    4.1. Cration du projet

    Un projet Entreprise Application rassemble dans un projet unique :- lEJB ;- le Web Service.

  • 8/10/2019 cours_JEE_1.pdf

    75/93

    75

    Attention dcocher les deux cases comme indiqu ci-dessous :

    LEJB et la WebApplication que nous venons de crer doivent tre inclus dans lapplication

    entreprise que nous venons de crer. Un clic droit sur le package Java EE Modules faitapparatre un menu contextuel qui recense les projets actuellement connus de NetBeans etrfrencs dans la partie projet.

    Vrifier que vous avez slectionn le mme serveur glassfish pour la web applicationlEJB, et lEntreprise application.

  • 8/10/2019 cours_JEE_1.pdf

    76/93

    76

    Une fois inclus dans le projet EntrepriseApplication, on doit obtenir ceci :

  • 8/10/2019 cours_JEE_1.pdf

    77/93

    77

    4.2. Tester le web service (again)

    Penser arrter Glassfish et connecter la base de donnes base_medecin avant de poursuivre.

    Dans un premier temps, il faut compiler le projet EntrepriseApplication1.

  • 8/10/2019 cours_JEE_1.pdf

    78/93

    78

    Dans un deuxime temps, il faut dployer le projet EntrepriseApplication1. Avant de dployerlapplication assurez-vous davoir enlev lEJB dploy et/ou le Webservice afin dviter desconflits (ServicesServersGlassfishApplicationEJBClic droitUndeploy).

  • 8/10/2019 cours_JEE_1.pdf

    79/93

    79

    Attention, il peut tre ncessaire de lancer le dploiement deux fois ...Finalement, faire un clic droit sur WsDaoJpa dans le projet WebApplication1. Choisir TestWebService.

  • 8/10/2019 cours_JEE_1.pdf

    80/93

    80

    Ceci permet de tester les web services directement partir dun navigateur !

  • 8/10/2019 cours_JEE_1.pdf

    81/93

    81

    Avec la rponse SOAP :

  • 8/10/2019 cours_JEE_1.pdf

    82/93

    82

    Il peut arriver que cette partie ne fonctionne pas soit parce que vous navez pasdploy correctement, soit parce que le port est dj utilis par une autreapplication. Dans ces cas, vous aurez le message suivant

    Si cest un problme de dploiement, il faut vrifier tous les paramtres prcdemment entrs. Sicest un problme de port, il suffit de changer le port de glassfish.Pour sassurer que cest bien un problme de port, on va entrer localhost:8080 (cf. messagederreur) dans un navigateur.

  • 8/10/2019 cours_JEE_1.pdf

    83/93

    83

    Par exemple, nous avons obtenu ceci sur une machine de test :

    Cela indique que le port est occup par oracle. Il faut donc dire Glassfish dutiliser un autre port.

    Ajouter un nouveau serveur :

    Et entrer un nom du nouveau domaine :

  • 8/10/2019 cours_JEE_1.pdf

    84/93

    84

    Puis valider les options par dfaut.

    On retrouve ce serveur dans la liste des serveurs Glassfish disponibles :

    En regardant dans la proprit des serveurs, on remarque que le nouveau domaine nutilise plus le

    port 8080 :

    Il faut alors configurer le web service pour quil utilise le nouveau serveur (et pareillement pour lesautre applications si besoin).

  • 8/10/2019 cours_JEE_1.pdf

    85/93

    85

  • 8/10/2019 cours_JEE_1.pdf

    86/93

  • 8/10/2019 cours_JEE_1.pdf

    87/93

    87

    Enfin, redployer le web service.A moins que le nouveau port soit aussi utilis, normalement, vous navez plus de problme de port.

  • 8/10/2019 cours_JEE_1.pdf

    88/93

    88

    Partie 5. Cration dun client

  • 8/10/2019 cours_JEE_1.pdf

    89/93

    89

    Ce qui donne au final :

    Faire ensuite new Web Service Client.

  • 8/10/2019 cours_JEE_1.pdf

    90/93

    90

    Cliquer sur Broswer .

  • 8/10/2019 cours_JEE_1.pdf

    91/93

    91

    Faire ensuite : Browse et choisir WebApplication1 puis WSDaoJpa.

    Ceci donne finalement un projet de la forme :

  • 8/10/2019 cours_JEE_1.pdf

    92/93

  • 8/10/2019 cours_JEE_1.pdf

    93/93

    Medecins MedecinCourant = myArr_m.get(i) ;

    System.out.println(MedecinCourant.getNom());

    }

    }

    }

    Ce qui donne :

    -------------------- FIN ---------------------