Académique Documents
Professionnel Documents
Culture Documents
i m p o r t j a v a . rmi . Remote ;
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 ?
<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
2
Examen 2006 – 2 h
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.