Quand utiliser des beans de session avec plus de bean session sans état?
Un stateful session bean est définie comme suit:
Stateful Session Beans de L'état d'un objet comprend les valeurs
de ses variables d'instance. Dans un stateful session bean, l'instance
les variables de représenter l'état d'un client unique-bean session. Parce que
le client interagit (“entretiens”) avec son haricot, cet état est souvent
appelé l'état conversationnel.
Un bean session sans état est défini comme suit:
Beans de Session sans état d'Un bean session sans état ne permet pas de maintenir un
état conversationnel avec le client. Quand un client appelle la
les méthodes d'un stateless bean le bean peut contenir des variables d'instance
un état spécifique pour le client, mais seulement pour la durée de la
invocation. Lorsque la méthode est terminée, le client-spécifiques de l'état
ne devrait pas être retenu. Les Clients peuvent, toutefois, changer l'état d'
les variables d'instance dans les mélanges de stateless, et cet état est tenu
au cours de la prochaine invocation de la mise en commun des stateless bean. Sauf
lors de l'invocation de méthode, toutes les instances d'un stateless bean sont
équivalent, permettant le conteneur d'EJB pour assigner un exemple pour tout
client. C'est, l'état d'un bean session sans état devrait s'appliquer
sur l'ensemble des clients.
L'avantage de l'utilisation d'un bean session sans état sur stateful session bean est comme suit:
Parce que les beans de session sans état peut prendre en charge plusieurs clients, ils peuvent
offre une meilleure évolutivité pour les applications qui exigent un grand nombre
de clients. Typiquement, une application nécessite moins de session sans état
les haricots que stateful session beans à la charge le même nombre de
clients.
Donc, la question qui vient à l'esprit lorsque l'on doit utiliser stateful session beans? Pour ma naïve compréhension de la question, on devrait s'en tenir à l'utilisation d'un bean session sans état comme il le peut.
Quelles seraient les candidats à qui l'on doit utiliser stateful session bean? Tout de bons exemples?
- Connexes: stackoverflow.com/questions/8887140/...
Vous devez vous connecter pour publier un commentaire.
D'abord, vous devez comprendre comment les haricots sont créés et gérés sur le serveur.
Pour beans de session sans état le serveur peut maintenir une quantité variable d'instances dans une piscine. Chaque fois qu'un client demande une telle stateless bean (p. ex. grâce à une méthode d'une instance aléatoire est choisie pour servir cette demande. Cela signifie que si le client n'deux demandes subséquentes, il est possible que les deux instances différentes de la stateless bean servir la demande. En fait, il n'y a pas d'état conversationnel entre les deux demandes. Aussi, si le client disparaît, le haricot apatride ne se détruit et peut servir la demande suivante à partir d'un autre client.
D'autre part, une stateful session bean est étroitement connecté au client. Chaque instance est créée et délimitée à un client unique et ne sert que les demandes de ce client particulier. Il arrive ainsi que, si vous ne les deux les demandes ultérieures sur un stateful bean, votre demande sera servi toujours de la même instance du bean. Cela signifie que vous pouvez maintenir un état conversationnel entre les demandes. À la fin de la lifecyle, le client appelle une méthode enlever et le haricot est en train d'être détruit/prêt pour la collecte des ordures.
Qui dépend principalement de savoir si vous voulez maintenir le état conversationnel. Par exemple, si vous avez une méthode qui additionne deux nombres et de retourner le résultat vous utilisez un stateless bean parce que son opération d'une fois. Si vous appelez cette méthode un deuxième temps avec d'autres nombres que vous ne sont pas intéressés par le résultat de la précédente, plus plus.
Mais si vous voulez, par exemple, compter le nombre de demandes d'un client, vous devez utiliser un stateful bean. Dans ce scénario, il est important de savoir combien de fois le client a demandé à la méthode d'haricot avant, de sorte que vous avez à maintenir l'état conversationnel dans le bean (par exemple avec une variable). Si vous utilisez un stateless bean ici, la demande du client doit être servi à chaque fois à partir d'un autre bean, ce qui bousille vos résultats.
@Remove
(javax.ejb
) est invoquée explicitement (cette méthode n'a même pas besoin d'être codé. Il pourrait simplement être laissé vide/vide étant donné qu'il est annoté par@Remove
). Si le client a oublié de détruire un stateful session bean, que bean serait conservé sur balançant sur le serveur jusqu'à ce que le conteneur lui-même décide de supprimer à l'aide de sa propre politique. Vais-je tort?Je pense que le plus grand exemple de l'utilisation d'un Stateful session bean est un Panier, où vous stockez tous les produits de l'utilisateur qui souhaite acheter.