Vous êtes sur la page 1sur 7

UNIVERSITE DE SFAX Année Universitaire : 2020-2021

MATRICULE :………………………
Institut Supérieur d’Informatique EXAMEN
et de multimédia Durée : 60 mn NOM :………………………..
PRENOM : …………………..
Auditoire : P-MPIGP
Module : JEE

Note :

On vous charge de développer une application JEE pour gérer les ventes de produits. Pour cela, on vous offre le
diagramme de classes de l’application visée (voir Figure 1).
Partie I : Ecriture des beans (10 pts) [ cette partie fait l’objet du CC]

Figure 1 : Diagramme de classes

Question 1 : Combien de beans entity doit-on écrire pour implémenter le diagramme de classes de la Figure 1 ?
…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

Question 2 : Quel est le nombre de tables qui va être généré dans la BD sachant qu’on va utiliser une seule table pour la
transformation de l’héritage ?
…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

Question 3 : Supposons qu’on dispose du code Java des beans entity Produit, Passager et Détaillant, on vous
demande de compléter le code (là où il y a des points) du bean entity Client sachant que :

- Tous les beans entity se trouvent dans le package bean.entity.


- La table correspondante au bean Participant est CLIENTS
- Les colonnes de cette table sont comme suit : ID_CLIENT, NOM_CLIENT, PRENOM_CLIENT et
ADRESSE_CLIENT.
- L'attribut identifiant joue le rôle de la clé primaire qui est générée automatiquement.
- La stratégie de transformation de l’héritage est celle de la génération d’une seule table.
- Le nom de la colonne discriminante de l’héritage est TYPE_CLIENT, son type est STRING, sa longueur est 10.
- Les données des attributs de type collection sont chargée systématiquement lorsque l’entité est chargée.
- La propagation en cascade pour les attributs de type collection se fait pour tous les types d’opération.

1/7
NE RIEN ECRIRE ICI

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

import java.util.Collection;

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

@Inheritance(strategy=………………………………………………………………………………………………………………………………………)

@DiscriminatorColumn(name="……………………………………………",discriminatorType=…………………………………………………………………,length=………)

public ………………………………………………… class Client ………………………………………………………………………………………………………………{

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

private int identifiant;

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

private String nom;

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

private String prenom;

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

private String adresse;

……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

private ……………………………………………………………………………………………… produits;

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

public String getNom() { return nom; }

public void setNom(String nom) {this.nom = nom; }

public String getPrenom() {return prenom; }

2/7
public void setPrenom(String prenom) { this.prenom = prenom; }

public String getAdresse() { return adresse; }

public void setAdresse(String affiliation) { this.adresse = adresse; }

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

}//Fin de la classe Client

Question 4 : Le code ci-dessous donné, présente un extrait de l’interface du bean session qu’on va utiliser afin de
simuler les traitements que nous pouvons effectuer pour la gestion des séminaires. Compléter le code (là où il y a des
points) de la classe du bean GestionProduitBean qui implémente cette interface sachant que :
- La classe du bean se trouve dans le package bean.session.
- Le nom du bean GestionProduitBean est PRODUIT.
- La gestion de la persistance au niveau du bean est réalisée moyennant un EntityManager.
- Le nom de l’unité de persistance est UP_PRODUIT
- On ne va pas gérer les exceptions lors de la recherche d’un client ou d’un produit.

package bean.session;
import java.util.List;
import javax.ejb.Remote;
import bean.entity.*;
@Remote
public interface GestionProduit {
public void ajouterProduit(Produit p);/*ajouter un produit dans la BD*/
public void ajouterClient(Client c);/*ajouter un client dans la BD*/
public void acheterProduit(int idc, int idp);/*réaliser l’achat d’un produit par un client, la
quantité achetée est toujours égale à 1*/
public void supprimerProduit(int idp);/*supprimer un produit*/
public double calculerChiffreAffaireProduit(int idp);/*calculer le chiffre d’affaires réalisé par
un produit*/
public List<Produit> consulterProduits();/*consulter la liste des produits*/
public List<Client> consulterClientsParProduit(int idp);/* consulter la liste des clients par
produits*/
}

3/7
//Code de la classe du bean ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

import java.util.List; ………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………… ………………………………………………………………………………………………………………………}

…………………………………………………………………………………………………………………………… public void supprimerProduit (int idp) {

public class GestionProduitBean ……………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………….. ……………………………………………………………………………………………………………………………

{…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

public void ajouterProduit(Produit p) { ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………} ……………………………………………………………………………………………………………………………

public void ajouterClient(Client c) { ………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………} ……………………………………………………………………………………………………………………………

public void acheterProduit(int idc, int idp) { }

…………………………………………………………………………………………………………………………… public double calculerChiffreAffaireProduit(int

…………………………………………………………………………………………………………………………… idp){

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………..} ……………………………………………………………………………………………………………………………

public List<Produit> consulterProduits() { ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………..}

4/7
public List<Client> ……………………………………………………………………………………………………………………………

consulterClientsParProduit(int idp) { ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… ……………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………… …………………………………………………………………………………………………………………………}

…………………………………………………………………………………………………………………………… }// Fin de la classe du bean

Question 5 : Pour réussir le déploiement de tous les beans (session et entity) dans le serveur d’application on a besoin
d’un fichier xml qu’on doit ajouter dans le répertoire META-INF. Quel est le nom de ce fichier ?
…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

Partie II : Ecriture d’un client Java (5 pts)


1) Compléter le code de la classe Test jouant le rôle d'un client java et permettant de réaliser les traitements suivants :
- Ajouter les clients présentés dans la figure suivante.

- Faire l’achat du produit numéro 1 par le client numéro 4


- Afficher la recette du produit numéro 1
Remarque : On suppose que le projet EJB est intitulé Examen20202021
import java.util.List;

import java.util.Properties;

import javax.naming.*;

………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

public class Test {

public static void main(String[] args) throws InterruptedException {

……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

try {Properties prop = new Properties();

prop.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");

Context context =new InitialContext(prop);

5/7
………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

//ajout des clients

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………….

//achat du produit numéro 1 par le client numéro 4

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

//affichage recette produit numero 1

………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

} catch (NamingException e) {e.printStackTrace();}

}}

Partie III : Ecriture d’une servlet (5 pts)


1) Compléter le code de la Servlet (SeminaireProduit) jouant le rôle d'un client web et permettant d’afficher les
informations des produits y compris le total des chiffres d’affaires réalisés comme indiqué dans la Figure suivante.

Remarques :
- Le nom de la servlet est "servletProduit" ;L’urlPattern de la servlet est "/servletProduit"
- Pas de code HTML à écrire, seulement du code Java
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.ejb.EJB;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
……………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………

6/7
@WebServlet(name="………………………………………………….. ",urlPatterns={"……………………………………………………….. "})

public class SeminaireProduit extends ……………………………………………………………………………… {

……………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………

protected void ……………………………… (HttpServletRequest request, HttpServletResponse response) throws

ServletException, IOException {

……………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………

PrintWriter out = response.getWriter();

out.println("<html>");

out.println("<body>");

out.println("<h1>Liste des produits</h1>");

out.println("<table border=\"1\" width=\"80%\">" );

out.println("<tr>");

out.println("<th>Identifiant</th><th>Libellé</th><th>Quantité en stock</th><th>Chiffres

d’affaires</th>");

out.println("</tr>");

……………………………………………………………………………………………………………………………

……………………………………………………………………………………………………………………………

{out.println("<tr align=center>");

out.println("<td>"+ …………………………………………………………………………………………………+"</td>");

out.println("<td>"+ …………………………………………………………………………………………………+"</td>");

out.println("<td>"+…………………………………………………………………………………………………+"</td>");

out.println("<td>"+ …………………………………………………………………………………………………………………………………………………………………………………+"</td>");

out.println("</tr>");

……………………………………………………………………………………………………………………………………………………………………………………………………

out.println("<tr align=right>");

out.println("<td colspan=3>"+ "Total"+"</td>");

out.println("<td align=center>"+……………………………………………………………………………………………… +"</td>");

out.println("</tr>");

out.println("</table>" );

out.println("</body>");

out.println("</html>");

} }

7/7

Vous aimerez peut-être aussi