2010-08-04 2 views
3

Je voudrais comprendre la signification complète de l'annotation @SessionScoped dans un ManagedBean JSF.Définition et signification pratique de @SessionScoped

Je pense qu'il est lié à la http séance, mais encore, il est pas très clair pour moi quand il commence , quand il se termine et si elle peut être interrompue .

  • Si je laisse un navigateur ouvert, sans activité, pendant 2 heures. La session est-elle toujours ouverte?
  • Une session est-elle partagée entre les onglets du navigateur
  • Une session se comporte-t-elle de manière identique dans Firefox, IE ou Safari?
  • ...
+0

La session JSF est en effet soutenue par HttpSession. Je pense qu'il est temps d'apprendre aussi l'API Servlet. Vous pouvez également trouver cette réponse utile (http://stackoverflow.com/questions/3106452/java-servlet-instantiation-and-session-variables/3106909#3106909). – BalusC

Répondre

3
  1. pas, la session fois-s'il n'y a pas d'activité
  2. oui, la session est partagée entre les onglets du navigateur
  3. oui, la session est un côté serveur notion principalement, les navigateurs envoient seulement un cookie à identifier

La session commence lorsque l'utilisateur demande la première page.

La méthode @PostConstruct de la session scope haricots (si elle existe) est invoquée lorsque vous accédez à une page qui fait référence à ce bean (je ne suis pas tout à fait sûr dans ce domaine, cependant)

La session se termine lorsque vous appelez session.invalidate() ou quand il expire (la période d'expiration si configurable en web.xml). Ensuite, la méthode @PreDestroy (si elle existe) est appelée. JSF s'exécute au-dessus de l'API Servlet

+0

En fait, voici le javadoc: http://docs.jboss.org/cdi/api/1.0/javax/enterprise/context/SessionScoped.html – Herme

+0

Cherchait des informations sur le moment où les instances du bean @SessionScoped sont créées. En effet, vous avez raison. Ils ne sont pas créés automatiquement lorsqu'une session démarre, mais lorsqu'ils sont référencés pour la première fois par une page ou injectés dans un bean de portée inférieure utilisé par une page. Je pensais que mes tests étaient erronés mais votre hypothèse est une sorte de confirmation. –