|
EJB 2 - Les Entreprise Java Bean (JavaBeans)
3.3.Qu’est ce qu’un
Session Bean
Un session bean représente
un client unique à l’intérieur du serveur
applicatif. Pour accéder à une application déployée
sur le serveur, les clients appellent les méthodes du session
bean. Celui-ci effectue le travail à la place des clients, en
exécutant les tâches complexes du côté du
serveur.
Comme son nom l’indique, un
session bean est semblable à une session interactive. Il n’est
pas partagé ; il ne peut avoir qu’un seul client,
de la même manière qu’une session interactive ne
peut avoir qu’un unique client. Un session bean n’est pas
persistant (ces données ne sont pas sauvegardées).
Quand le client se termine, le session bean semble se terminer
également et n’est plus associé avec le
client.
3.3.1.Modes de gestion d’état
Il existe deux types de session
beans : stateless et stateful.
Stateless
Session Beans
Un stateless session bean
(bean session sans état) ne maintient pas un état de la
conversation pour le client. Quand un client appelle une méthode
d’un stateless bean, les variables d’instance du bean
peuvent contenir un état mais seulement pour la durée
de l’appel. Quand la méthode est terminée, l’état
n’est pas sauvegardé. Exceptées durant l’appel
de méthode, toutes les instances d’un stateless bean
sont équivalentes, laissant le conteneur d’EJB assigner
une instance à un client.
Du fait que les stateless session
beans peuvent supporter de multiples clients, ils peuvent offrir une
meilleure évolutivité pour les applications exigeant un
grand nombre de clients. Typiquement, pour supporter le même
nombre de clients, une application exigera moins de stateless session
bean que de stateful session beans.
Parfois, le conteneur d'EJB peut-être
conduit à sauvegarder un stateful session bean sur un stockage
secondaire. En revanche, les stateless session bean n’étant
jamais écrits sur un stockage secondaire ils peuvent offrir de
meilleures performances que les stateful session bean.
Un stateless session bean peut
implémenter un web service, contrairement autres types
d’enterprise beans.
Stateful
Session Beans
L'état d'un objet correspond
aux valeurs de ses variables d'instance. Dans un stateful session
bean, les variables d'instance représentent l'état
d'une unique session client-bean. Puisque le client interagit
(communique) avec son bean, cet état est souvent appelé
état conversationnel (conversational state).
L'état est maintenu pour la
durée de la session client-bean. Si l’application
cliente supprime le bean ou s’arrête, la session s’achève
et l'état disparaît. Cette nature passagère de
l'état n'est pas un problème puisque lorsque la
conversation entre le client et le bean s’achève, il n’y
a pas de raison de retenir l'état.
3.3.2.Quand utiliser les Session
Beans ?
En général, vous devriez utiliser un session bean pour
l’une des raisons suivantes :
-
À n'importe quel instant, seulement un client a accès
à l'instance du bean.
-
L’état du bean n’est pas persistant, il n’existe
que pour une courte durée (environ quelques heures).
-
Le bean implémente un web service.
Les stateful session beans sont appropriés si l’une des
conditions suivantes est vraie :
-
L’état du bean représente l’interaction
entre le bean et un client particulier.
-
Le bean doit conserver les informations concernant le client durant
l’exécution des méthodes.
-
Le bean fait la liaison entre le client et d’autres composants
de l’application, présentant une vue simplifiée
au client.
-
En coulisse, le bean contrôle le workflow de plusieurs
entreprises beans.
Pour améliorer les performances, vous pourriez choisir un
stateless session bean s'il a l’une de ces caractéristiques :
-
L’état du bean n’a pas de donnée
spécifique à un client.
-
Dans un seul appel de méthode, le bean accomplit une tâche
générique pour tous les clients. Par exemple, vous
pourriez utiliser un stateless session bean pour envoyer un email
qui confirme un ordre en ligne.
-
Le bean récupère d'une base de données un
ensemble de données en lecture seule qui sont souvent
utilisées par les clients. Un tel bean, par exemple, pourrait
récupérer les lignes d’une table qui
représentent les produits qui sont en vente ce mois.
|
|
 |