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
|