Introduction � l'haricot de session
|
Haricot de session ?
|
Un haricot de session repr�sente un client simple � l'int�rieur du serveur de J2EE. Pour acc�der � une application qui est d�ploy�e sur le serveur, le client appelle les m�thodes de l'haricot de session. L'haricot de session effectue le travail pour son client, prot�geant le client de la complexit� en ex�cutant des affaires charge � l'int�rieur du serveur.
Comme son nom le sugg�re, un haricot de session est semblable � une session interactive. Un haricot de session n'est pas partag�--il peut avoir juste un client, de la m�me mani�re celui qu'une session interactive peut avoir juste un utilisateur. Comme une session interactive, un haricot de session n'est pas persistant. (C'est-�-dire, ses donn�es ne sont pas sauv�es � une base de donn�es.) quand le client se termine, son haricot de session semble se terminer et n'est plus associ� au client.
|
Classe d'haricot de session
|
La classe d'haricot de session pour cet exemple s'appelle CartBean. Comme n'importe quel haricot de session, la classe de CartBean doit r�pondre � ces exigences :
- Elle met en application l'interface de SessionBean.
- La classe est d�finie comme public.
- La classe ne peut pas �tre d�finie en tant qu'abstraite ou finale.
- Elle applique une ou plusieurs m�thodes d'ejbCreate.
- Elle applique les m�thodes des affaires.
- Elle contient un constructeur public sans des param�tres.
- Elle ne doit pas d�finir la m�thode de mener � bonne fin.
Le code source pour la classe de CartBean suit.
|
import java.util.*;
import javax.ejb.*;
public class CartBean implements SessionBean {
String customerName;
String customerId;
Vector contents;
public void ejbCreate(String person)
throws CreateException {
if (person == null) {
throw new CreateException("Null
person not allowed.");
}
else {
customerName = person;
}
customerId = "0";
contents = new Vector();
}
public void ejbCreate(String person, String id)
throws CreateException {
if (person == null) {
throw new CreateException("Null
person not allowed.");
}
else {
customerName = person;
}
IdVerifier idChecker = new IdVerifier();
if (idChecker.validate(id)) {
customerId = id;
}
else {
throw new
CreateException("Invalid id: "+ id);
}
contents = new Vector();
}
public void addBook(String title) {
contents.addElement(title);
}
public void removeBook(String title) throws BookException {
boolean result = contents.removeElement(title);
if (result == false) {
throw new BookException(title +
"not in cart.");
}
}
public Vector getContents() {
return contents;
}
public CartBean() {}
public void ejbRemove() {}
public void ejbActivate() {}
public void ejbPassivate() {}
public void setSessionContext(SessionContext sc) {}
}
|
Modes de gestion d'�tat
|
Il y a deux types d'haricots de session : stateful et apatride.
|
Haricots de session de Stateful
|
L'�tat d'un objet comprend les valeurs de ses variables d'exemple. Dans un haricot stateful de session, les variables d'exemple repr�sentent l'�tat d'une session unique de client-haricot. Puisque le client agit l'un sur l'autre (des � entretiens �) avec son haricot, cet �tat s'appelle souvent l'�tat conversationnel.
L'�tat est maintenu pour la dur�e de la session de client-haricot. Si le client enl�ve l'haricot ou se termine, la session finit et l'�tat dispara�t. Cette nature passag�re de l'�tat n'est pas un probl�me, cependant, parce que quand la conversation entre le client et les extr�mit�s d'haricot l� n'est aucun besoin de maintenir l'�tat.
|
Haricots apatrides de session
|
Un haricot apatride de session ne maintient pas un �tat conversationnel pour un client particulier. Quand un client appelle la m�thode d'haricot apatride, les variables de l'exemple de l'haricot peuvent contenir un �tat, mais seulement pour la dur�e de l'invocation. Quand la m�thode est finie, l'�tat n'est plus maintenu. Except� pendant l'invocation de m�thode, tous les exemples d'un haricot apatride sont �quivalent, permettant au r�cipient d'EJB d'assigner un exemple � n'importe quel client.
Puisque les haricots apatrides de session peuvent soutenir les clients multiples, ils peuvent offrir un meilleur scalability pour les applications qui exigent un grand nombre de clients. Typiquement, une application exige de moins d'haricots apatrides de session que les haricots stateful de session de soutenir le m�me nombre de clients.
Parfois, le r�cipient d'EJB peut �crire un haricot stateful de session au stockage secondaire. Cependant, des haricots apatrides de session ne sont jamais �crits au stockage secondaire. Par cons�quent, les haricots apatrides peuvent offrir une meilleure ex�cution que les haricots stateful.
|
Quand employer des haricots de session
|
G�n�ralement vous devriez employer un haricot de session si les circonstances suivantes se tiennent :
Les haricots de session de Stateful sont appropri�s si les conditions suivantes l'unes des sont vraies :
L'�tat de l'haricot repr�sente l'interaction entre l'haricot et un client sp�cifique. L'haricot doit tenir des informations sur le client � travers des invocations de m�thode.
L'haricot n�gocie entre le client et les autres composants de l'application, pr�sent une vue simplifi�e au client.
Dans les coulisses, l'haricot contr�le l'�coulement de travail de plusieurs haricots d'entreprise.
Pour am�liorer l'ex�cution, vous pourriez choisir un haricot apatride de session s'il a quelconque d'entre ces traits :
- L'�tat de l'haricot n'a aucune donn�e pour un client sp�cifique.
Dans une invocation simple de m�thode, l'haricot ex�cute un g�n�rique chargent pour tous les clients. Par exemple, vous pourriez employer un haricot apatride de session pour envoyer un E-mail qui confirme un ordre en ligne.
L'haricot cherche d'une base de donn�es un ensemble de donn�es inalt�rables qui sont employ�es souvent par des clients. Un tel haricot, par exemple, pourrait rechercher les rang�es de table qui repr�sentent les produits qui sont en vente ce mois.
|
|
|
Keywords:
EJB Session,ejb session bean,ejb session beans,j2ee session,tateless session bean,stateful session bean,weblogic session,jboss session,stateless session beans,stateful session beans,session ejb,weblogic session timeout,jboss session timeout,stateless session ejb,j2ee session variables,weblogic session replication,stateful session ejb,weblogic 8.1 session,jboss session bean,ejb entity beans
|