Escolar Documentos
Profissional Documentos
Cultura Documentos
Plan du cours
Introduction gnrale EJB : Les fondamentaux
Exemples
Saisie d'une commande, Compression vido, Gestion d'un caddy, d'un catalogue de produits, Transactions bancaires
Sans tat : traite les tches qui peuvent tre accomplies en un seul appel de mthode ; pas dtat maintenu entre 2 appels de mthode Exemple : afficher la liste des comptes bancaires dun client
Avec tat : est associ un seul client ; maintient un tat entre plusieurs appels de mthodes ; pour les tches accomplies en plusieurs tapes Exemple : remplir son caddy avec des articles dont les caractristiques sont affiches sur des pages diffrentes
Singleton : quand on veut tre assur quil ny a quune seule instance du bean pour tous les utilisateurs de lapplication Exemple : cache dune liste de pays (pour amliorer les performances)
Le client passe toutes les donnes ncessaires au traitement lors de l'appel de mthode Le container est responsable de la cration et de la destruction du Bean
Il peut le dtruire juste aprs un appel de mthode, ou le garder en mmoire pendant un certain temps pour rutilisation.
Une instance de Stateless Session Bean n'est pas propre un client donn, elle peut tre partage entre chaque appel de mthode Le serveur maintient un pool de beans sans tat
Interface locale
Si on ne fournit pas dinterface spar ConverterBean, il aura automatiquement linterface compose de sa mthode publique et il ne pourra tre utilis que par les composants qui sont dans le mme serveur dapplication Ce qui correspondra au code du transparent suivant
@Local public interface Convertisseur { public BigDecimal yenVersEuro(BigDecimal yen); } @Stateless public class ConvertisseurBean implements Convertisseur { ... }
Donner une interface locale explicite permet de ne pas exposer aux clients toutes les mthodes publiques du bean
Pour que le bean session soit utilisable par un composant situ sur un serveur dapplication, il faut lui ajouter une interface distante :
@Remote public interface ConvertisseurDistant { public BigDecimal yenVersEuro(BigDecimal yen); } @Stateless public class ConvertisseurBean implements Convertisseur { ... }
Exemple : un client surfe sur un site de ecommerce, slectionne des produits, remplit son caddy
D'une requte HTTP l'autre, il faut un moyen de conserver un tat (le caddy par ex.)
En rsum, un Stateful Session Bean est utile pour maintenir un tat pendant la dure de vie du client
au cours d'appels de mthodes successifs. Au cours de transactions successives. Si un appel de mthode change l'tat du Bean, lors d'un autre appel de mthode l'tat sera disponible.
Problme de ressource
Le client entretient une conversation avec le bean, dont l'tat doit tre disponible lorsque ce mme client appelle une autre mthode. Problme si trop de clients utilisent ce type de Bean en mme temps.
Ressources limites (connexions, mmoire, sockets) Mauvaise scalabilit du systme, L'tat peut occuper pas mal de mmoire
Passivation / Activation
Passivation : pour conomiser la mmoire, le serveur dapplication peut retirer temporairement de la mmoire centrale les beans sessions avec tat pour les placer sur le disque Activation : le bean sera remis en mmoire ds que possible quand les clients en auront besoin Pendant la passivation il est bon de librer les ressources utilises par le bean (connexions avec la BD par exemple)
Activation/Passivation callbacks
Accs concurrents
Le code des beans session na pas besoin dtre thread-safe puisque le container ne permettra jamais laccs par plusieurs requtes Ca nest pas ncessairement le cas pour les EJB singletons (configurable) ; on peut laisser le container grer la concurrence en donnant des annotations (@Lock ou @ConcurrencyManagement)