2011-02-12 6 views
0

Je lis sur JSF2 et Managed Beans. J'ai une question liée à la passivation.Session portée passivation de Bean géré

J'ai récemment demandé différents cas d'utilisation de @Stateful Les EJB, @SessionScoped et @ManagedBean ici:

sessionscoped managed bean vs stateful ejb. Maintenant, les EJB stateful sont éligibles pour la passivation et l'activation qui leur permettent d'être temporairement passivés au stockage persistant pour diminuer l'utilisation de la mémoire quand ils sont inactifs, je n'ai pas vu cette fonctionnalité disponible pour managedbeans. Donc, je me suis dit que peut-être je devrais aller pour @RequestScoped Managed Beans et préférer @Stateful EJB pour les caddies etc à la place. Utilisation de @Sessionscoped Beans gérés uniquement pour stocker des informations utilisateur minimales.

Est-ce correct? Y a-t-il des lignes directrices pour cela?

Répondre

2

Une requête bean géré géré ne fonctionnerait pas ici. Pour accéder à une instance de bean de session stateful particulière, vous avez besoin de son stub.

Si vous utilisiez des beans gérés à portée de requête, il n'y aurait pas d'emplacement pour stocker ce tronçon et vous obtiendriez une nouvelle instance à chaque requête. Cela bat complètement la raison de l'utilisation de beans session stateful en premier lieu. Vous pouvez toutefois utiliser un bean géré par JSF avec vue (si l'action a lieu sur une seule page) ou un bean CDI à portée de conversation (si l'action se déroule sur plusieurs pages). Surtout avec ce dernier, vous pouvez lier la portée de votre conversation à la durée de vie du bean session stateful. Notez que tout cela nécessite au moins une compréhension intermédiaire de Java EE. Si vous ne faites pas attention à la passivation des beans de session avec état (par exemple, n'appelez jamais une méthode annotée @Remove), l'espace disque dur de votre serveur s'en trouvera progressivement réduit.

+0

Donc, vous suggérez que je pars pour les beans de la portée de la conversation au lieu d'un haricot de session juste ?. J'ai pensé à ça. Mais même si maintenant j'ai une meilleure compréhension des EJBs, ils semblent de plus en plus inutiles à chaque fois. À l'exception du contexte de persistance étendue, je ne peux pas penser à une utilisation pour eux dans une application Web. – arg20

+0

Le contexte de persistance étendue est la clé lorsque vous devez gérer des verrous JPA (optimistes) sur une entité, par ex. pour s'assurer que lorsqu'un article a été placé dans un panier, le dernier n'est pas vendu à un autre client en même temps. –

+1

Je n'ai pas suggéré d'opter pour un haricot à la portée de la conversation au lieu d'un haricot de session avec état, mais plutôt de les combiner. –

Questions connexes