Vous êtes sur la page 1sur 5

Examen 2006 – 2 h

PAR : Programmation d’Applications Réparties


Deuxième année

1 Un peu de Java RMI


On veut faire une application composée de deux objets serveurs : un serveur pour enregistrer des
utilisateurs et un serveur de calcul dont l’accès est contrôlé par le service d’authentification. L’interface
du service d’authentification est la suivante
package test ;

i m p o r t j a v a . rmi . Remote ;

public i n t e r f a c e UserManagement e x t e n d s Remote {


p u b l i c v o i d addUser ( S t r i n g name , S t r i n g p a s sw o r d ) ;
p u b l i c b o o l e a n c h e c k U s e r ( S t r i n g name , S t r i n g p a s sw o r d ) ;
p u b l i c v o i d removeUser ( S t r i n g name ) ;

L’interface de l’objet serveur de calcul est la suivante


package test ;

i m p o r t j a v a . rmi . Remote ;

public i n t e r f a c e C a l c u l e x t e n d s Remote {
p u b l i c i n t add ( i n t a , i n t b ) ;
p u b l i c i n t sub ( i n t a , i n t b ) ;

Pour faire l’authentification, on utilise une Fabrique qui retournera une référence vers un serveur de
calcul aux utilisateurs fournissant les bons paramètres d’authentification
package test ;

i m p o r t j a v a . rmi . Remote ;

public i n t e r f a c e C a l c u l F a b r i q u e e x t e n d s Remote {
p u b l i c C a l c u l g e t C a l c u l ( S t r i n g nom , S t r i n g p a ssw o r d ) ;
}

F Exercice 1.
. Question 1. Ecrivez l’implantation de UserManagement.
. Question 2. Ecrivez l’implantation de CalculFabrique.
. Question 3. Ecrivez également la classe qui instancie et enregistre les services dans le serveur de
nommage.
. Question 4. (Subsidiaire ?) Indépendamment du fait que le serveur d’authentification n’est pas protégé
et que les informations d’authentification circulent en clair sur le réseau, pourquoi cette façon de faire
l’autorisation d’accès au service n’est pas du tout sure ?

2 Une application EJB


<?xml v e r s i o n=” 1 . 0 ” e n c o d i n g=”UTF−8”?>
<e j b −j a r i d=” e j b −j a r I D ” v e r s i o n=” 2 . 1 ” xmlns=” h t t p : / / j a v a . sun . com/ xml / ns / j 2 e e ”
xmlns : x s i=” h t t p : / /www. w3 . o r g /2001/XMLSchema−i n s t a n c e ”
x s i : s c h e m a L o c a t i o n=” h t t p : / / j a v a . sun . com/ xml / ns / j 2 e e ”
x s i : s c h e m a L o c a t i o n=” h t t p : / / j a v a . sun . com/ xml / ns / j 2 e e / e j b −j a r 2 1 . xsd ”>

<d i s p l a y −name>
TestEB</ d i s p l a y −name>
<e n t e r p r i s e −beans>
<!−− @ g e n e r a t e d e j b s . C l i e n t B e a n#e j b / a e j b d d . e j b s . ClientBean −−>
<e n t i t y i d=” e j b s . C l i e n t B e a n ”>
<e j b −name>C l i e n t </e j b −name>
<l o c a l −home>e j b s . ClientLocalHome </ l o c a l −home>
<l o c a l >e j b s . C l i e n t L o c a l </ l o c a l >
<e j b −c l a s s >e j b s . C l i e n t B e a n </e j b −c l a s s >
Examen 2006 – 2 h

<p e r s i s t e n c e −type>C o n t a i n e r </ p e r s i s t e n c e −type>


<prim−key−c l a s s >j a v a . l a n g . I n t e g e r </prim−key−c l a s s >
<r e e n t r a n t >true</ r e e n t r a n t >
<cmp−v e r s i o n >2.x</cmp−v e r s i o n >
<a b s t r a c t −schema−name>C l i e n t </ a b s t r a c t −schema−name>
<cmp− f i e l d i d=” CMPFLD Client id ”>
< f i e l d −name>i d </ f i e l d −name>
</cmp−f i e l d >
<cmp− f i e l d i d=”CMPFLD Client nom”>
< f i e l d −name>nom</ f i e l d −name>
</cmp−f i e l d >
<cmp− f i e l d i d=” CMPFLD Client adresse ”>
< f i e l d −name>a d r e s s e </ f i e l d −name>
</cmp−f i e l d >
<primkey−f i e l d >i d </primkey−f i e l d >
</ e n t i t y >

<!−− @ g e n e r a t e d e j b s . CaddieBean#e j b / a e j b d d . e j b s . CaddieBean −−>


<e n t i t y i d=” e j b s . CaddieBean ”>
<e j b −name>Caddie </e j b −name>
<l o c a l −home>e j b s . CaddieLocalHome </ l o c a l −home>
<l o c a l >e j b s . C a d d i e L o c a l </ l o c a l >
<e j b −c l a s s >e j b s . CaddieBean </e j b −c l a s s >
<p e r s i s t e n c e −type>C o n t a i n e r </ p e r s i s t e n c e −type>
<prim−key−c l a s s >j a v a . l a n g . I n t e g e r </prim−key−c l a s s >
<r e e n t r a n t >true</ r e e n t r a n t >
<cmp−v e r s i o n >2.x</cmp−v e r s i o n >
<a b s t r a c t −schema−name>Caddie </ a b s t r a c t −schema−name>
<cmp− f i e l d i d=” CMPFLD Caddie id ”>
< f i e l d −name>i d </ f i e l d −name>
</cmp−f i e l d >
<cmp− f i e l d i d=” CMPFLD Caddie date ”>
< f i e l d −name>date </ f i e l d −name>
</cmp−f i e l d >
<cmp− f i e l d i d=” CMPFLD Caddie etat ”>
< f i e l d −name>e t a t </ f i e l d −name>
</cmp−f i e l d >
<primkey−f i e l d >i d </primkey−f i e l d >
</ e n t i t y >

<!−− @ g e n e r a t e d e j b s . Pr o du i t Bea n#e j b / a e j b d d . e j b s . ProduitBean −−>


<e n t i t y i d=” e j b s . Pr o du i t Bea n ”>
<e j b −name>P r o d u i t </e j b −name>
<l o c a l −home>e j b s . ProduitLocalHome </ l o c a l −home>
<l o c a l >e j b s . P r o d u i t L o c a l </ l o c a l >
<e j b −c l a s s >e j b s . ProduitBean </e j b −c l a s s >
<p e r s i s t e n c e −type>C o n t a i n e r </ p e r s i s t e n c e −type>
<prim−key−c l a s s >j a v a . l a n g . I n t e g e r </prim−key−c l a s s >
<r e e n t r a n t >true</ r e e n t r a n t >
<cmp−v e r s i o n >2.x</cmp−v e r s i o n >
<a b s t r a c t −schema−name>P r o d u i t </ a b s t r a c t −schema−name>
<cmp− f i e l d i d=” CMPFLD Produit id ”>
< f i e l d −name>i d </ f i e l d −name>
</cmp−f i e l d >
<cmp− f i e l d i d=”CMPFLD Produit nom”>
< f i e l d −name>nom</ f i e l d −name>
</cmp−f i e l d >
<cmp− f i e l d i d=” C M P F L D P r o d u i t p r i x U n i t a i r e ”>
< f i e l d −name>p r i x U n i t a i r e </ f i e l d −name>
</cmp−f i e l d >
<primkey−f i e l d >i d </primkey−f i e l d >
</ e n t i t y >

<!−− @ g e n e r a t e d e j b s . LigneCommandeBean#e j b / a e j b d d . e j b s . LigneCommandeBean −−>


<e n t i t y i d=” e j b s . LigneCommandeBean ”>
<e j b −name>LigneCommande</e j b −name>
<l o c a l −home>e j b s . LigneCommandeLocalHome</ l o c a l −home>
<l o c a l >e j b s . LigneCommandeLocal</ l o c a l >
<e j b −c l a s s >e j b s . LigneCommandeBean</e j b −c l a s s >
<p e r s i s t e n c e −type>C o n t a i n e r </ p e r s i s t e n c e −type>
<prim−key−c l a s s >j a v a . l a n g . I n t e g e r </prim−key−c l a s s >
<r e e n t r a n t >true</ r e e n t r a n t >
<cmp−v e r s i o n >2.x</cmp−v e r s i o n >
<a b s t r a c t −schema−name>LigneCommande</ a b s t r a c t −schema−name>
<cmp− f i e l d i d=”CMPFLD LigneCommande id”>
< f i e l d −name>i d </ f i e l d −name>
</cmp−f i e l d >
<cmp− f i e l d i d=” CMPFLD LigneCommande quantite ”>
< f i e l d −name>q u a n t i t e </ f i e l d −name>
</cmp−f i e l d >
<primkey−f i e l d >i d </primkey−f i e l d >
</ e n t i t y >
<e n t i t y i d=” F o u r n i s s e u r ”>
<e j b −name>F o u r n i s s e u r </e j b −name>
<l o c a l −home>e j b s . F o u r n i s s e u r L o c a l H o m e </ l o c a l −home>
<l o c a l >e j b s . F o u r n i s s e u r L o c a l </ l o c a l >
<e j b −c l a s s >e j b s . F o u r n i s s e u r B e a n </e j b −c l a s s >

2
Examen 2006 – 2 h

<p e r s i s t e n c e −type>C o n t a i n e r </ p e r s i s t e n c e −type>


<prim−key−c l a s s >j a v a . l a n g . I n t e g e r </prim−key−c l a s s >
<r e e n t r a n t >f a l s e </ r e e n t r a n t >
<cmp−v e r s i o n >2.x</cmp−v e r s i o n >
<a b s t r a c t −schema−name>F o u r n i s s e u r </ a b s t r a c t −schema−name>
<cmp− f i e l d i d=” CMPAttribute 1137747804779 ”>
< f i e l d −name>i d </ f i e l d −name>
</cmp−f i e l d >
<cmp− f i e l d i d=” CMPAttribute 1137747805521 ”>
< f i e l d −name>nom</ f i e l d −name>
</cmp−f i e l d >
<primkey−f i e l d >i d </primkey−f i e l d >
</ e n t i t y >
< s e s s i o n i d=” ClientManagement ”>
<e j b −name>ClientManagement </e j b −name>
<home>e j b s . w e b s p h e r e d e p l o y . CLOUDSCAPE V51 1 . ClientManagementHome</home>
<remote>e j b s . w e b s p h e r e d e p l o y . CLOUDSCAPE V51 1 . ClientManagement </remote>
<l o c a l −home>e j b s . w e b s p h e r e d e p l o y . CLOUDSCAPE V51 1 . ClientManagementLocalHome </ l o c a l −home>
<l o c a l >e j b s . w e b s p h e r e d e p l o y . CLOUDSCAPE V51 1 . ClientManagementLocal </ l o c a l >
<e j b −c l a s s >e j b s . w e b s p h e r e d e p l o y . CLOUDSCAPE V51 1 . ClientManagementBean </e j b −c l a s s >
<s e s s i o n −type>S t a t e l e s s </ s e s s i o n −type>
<t r a n s a c t i o n −type>C o n t a i n e r </ t r a n s a c t i o n −type>
</ s e s s i o n >
</ e n t e r p r i s e −beans>
<r e l a t i o n s h i p s >
<e j b −r e l a t i o n i d=” E J B R e l a t i o n 1 1 3 8 1 1 4 7 3 7 3 0 6 ”>
<e j b −r e l a t i o n −name>LigneCommande−P r o d u i t </e j b −r e l a t i o n −name>
<e j b −r e l a t i o n s h i p −r o l e i d=” E J B R e l a t i o n s h i p R o l e 1 1 3 8 1 1 4 7 3 7 3 1 7 ”>
<e j b −r e l a t i o n s h i p −r o l e −name>lignecommande </e j b −r e l a t i o n s h i p −r o l e −name>
< m u l t i p l i c i t y >One</ m u l t i p l i c i t y >
<r e l a t i o n s h i p −r o l e −s o u r c e >
<e j b −name>P r o d u i t </e j b −name>
</ r e l a t i o n s h i p −r o l e −s o u r c e >
<cmr−f i e l d >
<cmr−f i e l d −name>lignecommande </cmr−f i e l d −name>
</cmr−f i e l d >
</e j b −r e l a t i o n s h i p −r o l e >
<e j b −r e l a t i o n s h i p −r o l e i d=” E J B R e l a t i o n s h i p R o l e 1 1 3 8 1 1 4 7 3 7 3 1 6 ”>
<e j b −r e l a t i o n s h i p −r o l e −name>p r o d u i t </e j b −r e l a t i o n s h i p −r o l e −name>
< m u l t i p l i c i t y >One</ m u l t i p l i c i t y >
<r e l a t i o n s h i p −r o l e −s o u r c e >
<e j b −name>LigneCommande</e j b −name>
</ r e l a t i o n s h i p −r o l e −s o u r c e >
<cmr−f i e l d >
<cmr−f i e l d −name>p r o d u i t </cmr−f i e l d −name>
</cmr−f i e l d >
</e j b −r e l a t i o n s h i p −r o l e >
</e j b −r e l a t i o n >
<e j b −r e l a t i o n i d=” E J B R e l a t i o n 1 1 3 8 1 1 4 7 6 8 7 8 1 ”>
<e j b −r e l a t i o n −name>C l i e n t −Caddie </e j b −r e l a t i o n −name>
<e j b −r e l a t i o n s h i p −r o l e i d=” E J B R e l a t i o n s h i p R o l e 1 1 3 8 1 1 4 7 6 8 8 1 1 ”>
<e j b −r e l a t i o n s h i p −r o l e −name>c l i e n t </e j b −r e l a t i o n s h i p −r o l e −name>
< m u l t i p l i c i t y >Many</ m u l t i p l i c i t y >
<r e l a t i o n s h i p −r o l e −s o u r c e >
<e j b −name>Caddie </e j b −name>
</ r e l a t i o n s h i p −r o l e −s o u r c e >
<cmr−f i e l d >
<cmr−f i e l d −name>c l i e n t </cmr−f i e l d −name>
</cmr−f i e l d >
</e j b −r e l a t i o n s h i p −r o l e >
<e j b −r e l a t i o n s h i p −r o l e i d=” E J B R e l a t i o n s h i p R o l e 1 1 3 8 1 1 4 7 6 8 8 0 1 ”>
<e j b −r e l a t i o n s h i p −r o l e −name>c a d d i e </e j b −r e l a t i o n s h i p −r o l e −name>
< m u l t i p l i c i t y >One</ m u l t i p l i c i t y >
<r e l a t i o n s h i p −r o l e −s o u r c e >
<e j b −name>C l i e n t </e j b −name>
</ r e l a t i o n s h i p −r o l e −s o u r c e >
<cmr−f i e l d >
<cmr−f i e l d −name>c a d d i e </cmr−f i e l d −name>
<cmr−f i e l d −type>j a v a . u t i l . C o l l e c t i o n </cmr−f i e l d −type>
</cmr−f i e l d >
</e j b −r e l a t i o n s h i p −r o l e >
</e j b −r e l a t i o n >
<e j b −r e l a t i o n i d=” E J B R e l a t i o n 1 1 3 8 1 1 4 8 2 2 4 2 8 ”>
<e j b −r e l a t i o n −name>Caddie−LigneCommande</e j b −r e l a t i o n −name>
<e j b −r e l a t i o n s h i p −r o l e i d=” E J B R e l a t i o n s h i p R o l e 1 1 3 8 1 1 4 8 2 2 4 3 9 ”>
<e j b −r e l a t i o n s h i p −r o l e −name>c a d d i e </e j b −r e l a t i o n s h i p −r o l e −name>
< m u l t i p l i c i t y >Many</ m u l t i p l i c i t y >
<r e l a t i o n s h i p −r o l e −s o u r c e >
<e j b −name>LigneCommande</e j b −name>
</ r e l a t i o n s h i p −r o l e −s o u r c e >
<cmr−f i e l d >
<cmr−f i e l d −name>c a d d i e </cmr−f i e l d −name>
</cmr−f i e l d >
</e j b −r e l a t i o n s h i p −r o l e >
<e j b −r e l a t i o n s h i p −r o l e i d=” E J B R e l a t i o n s h i p R o l e 1 1 3 8 1 1 4 8 2 2 4 3 8 ”>
<e j b −r e l a t i o n s h i p −r o l e −name>lignecommande </e j b −r e l a t i o n s h i p −r o l e −name>
< m u l t i p l i c i t y >One</ m u l t i p l i c i t y >

3
Examen 2006 – 2 h

<r e l a t i o n s h i p −r o l e −s o u r c e >
<e j b −name>Caddie </e j b −name>
</ r e l a t i o n s h i p −r o l e −s o u r c e >
<cmr−f i e l d >
<cmr−f i e l d −name>lignecommande </cmr−f i e l d −name>
<cmr−f i e l d −type>j a v a . u t i l . C o l l e c t i o n </cmr−f i e l d −type>
</cmr−f i e l d >
</e j b −r e l a t i o n s h i p −r o l e >
</e j b −r e l a t i o n >
</ r e l a t i o n s h i p s >
<assembly−d e s c r i p t o r i d=” A s s e m b l y D e s c r i p t o r 1 1 3 7 2 4 1 6 9 1 7 6 3 ”>
<s e c u r i t y −r o l e i d=” S e c u r i t y R o l e 1 1 3 7 7 5 2 1 8 7 7 9 2 ”>
<d e s c r i p t i o n >
Un c l i e n t </ d e s c r i p t i o n >
<d e s c r i p t i o n >
Un c l i e n t </ d e s c r i p t i o n >
<r o l e −name>c l i e n t </ r o l e −name>
</ s e c u r i t y −r o l e >
<method−p e r m i s s i o n i d=” M e t h o d P e r m i s s i o n 1 1 3 8 1 1 5 2 9 1 8 2 3 ”>
<r o l e −name>c l i e n t </ r o l e −name>
<method>
<e j b −name>ClientManagement </e j b −name>
<method−i n t f >Remote</method−i n t f >
<method−name>addCaddie </method−name>
<method−params>
</method−params>
</method>
<method>
<e j b −name>ClientManagement </e j b −name>
<method−i n t f >Remote</method−i n t f >
<method−name>g e t T o t a l C a d d i e </method−name>
<method−params>
</method−params>
</method>
<method>
<e j b −name>ClientManagement </e j b −name>
<method−i n t f >L o c a l </method−i n t f >
<method−name>addCaddie </method−name>
<method−params>
</method−params>
</method>
<method>
<e j b −name>ClientManagement </e j b −name>
<method−i n t f >L o c a l </method−i n t f >
<method−name>g e t T o t a l C a d d i e </method−name>
<method−params>
</method−params>
</method>
</method−p e r m i s s i o n >
<c o n t a i n e r −t r a n s a c t i o n >
<method>
<e j b −name>ClientManagement </e j b −name>
<method−i n t f >Remote</method−i n t f >
<method−name>addCaddie </method−name>
<method−params>
</method−params>
</method>
<method>
<e j b −name>ClientManagement </e j b −name>
<method−i n t f >L o c a l </method−i n t f >
<method−name>addCaddie </method−name>
<method−params>
</method−params>
</method>
<t r a n s −a t t r i b u t e >Requi red </t r a n s −a t t r i b u t e >
</ c o n t a i n e r −t r a n s a c t i o n >
<c o n t a i n e r −t r a n s a c t i o n >
<method>
<e j b −name>ClientManagement </e j b −name>
<method−i n t f >Remote</method−i n t f >
<method−name>g e t T o t a l C a d d i e </method−name>
<method−params>
</method−params>
</method>
<method>
<e j b −name>ClientManagement </e j b −name>
<method−i n t f >L o c a l </method−i n t f >
<method−name>g e t T o t a l C a d d i e </method−name>
<method−params>
</method−params>
</method>
<t r a n s −a t t r i b u t e >S u p p o r t s </t r a n s −a t t r i b u t e >
</ c o n t a i n e r −t r a n s a c t i o n >
</assembl y−d e s c r i p t o r >
<e j b −c l i e n t −j a r >T e s t E B C l i e n t . j a r </e j b −c l i e n t −j a r >
</e j b −j a r >

4
Examen 2006 – 2 h

F Exercice 2.

. Question 5. Quelles sont les beans de cette application. Quels sont leur types.

. Question 6. A partir de cette description, faites le schéma E/A de la base et le schéma relationnel.
. Question 7. Quelles sont les propriétés transactionnelles définies pour les méthodes ? Que signifient-
elles ?

. Question 8. A partir de cette description, écrivez le code de la classe ClientBean. Vous y mettrez un
constructeur ayant pour paramètres tous les attributs de la classe.
. Question 9. Comment faire pour retrouver un client à partir de son nom. Que faut-il ajouter ?

. Question 10. Ecrivez le code de la méthode addCaddie qui prend en paramètre le nom d’un client et
crée un Entity Bean Caddie pour ce client

. Question 11. Ecrivez le code de la méthode getTotalCaddie qui prend en paramètre le nom d’un
client et retourne le prix du contenu du caddie.

Vous aimerez peut-être aussi