2010-09-30 3 views
2

J'ai une application Web que je suis en train de passer de Sun Application Server V9 à GlassFish V2.1.1Glassfish 2.1.1 - Les beans session appellent à plusieurs reprises init() et destroy()

J'utilise Netbeans 6.0.1 pour développer l'application, et il utilise JSP, SessionBeans et JDBC pour se connecter à MySQL.

J'ai bien progressé et je peux compiler et déployer l'application. à Glassfish OK. L'application démarre et je me dirige vers ma page de connexion, où je peux me connecter OK.

Cependant, je peux voir que tous mes SessionBeans appellent à plusieurs reprises les méthodes init() et destroy() à mesure que chaque page JSP est rendue.

Ma session Bean étend AbstractSessionBean

public class SessionBean1 extends AbstractSessionBean {

En utilisant Netbeans outil de débogage je traqué les méthodes méthode qui appelle la destroy() et init() LifecycleListener.attributeReplaced (événement HttpSessionBindingEvent) sur mes AbstractSessionBeans

public void attributeReplaced(HttpSessionBindingEvent event) {

// If the old value is an AbstractSessionBean, notify it 
    Object value = event.getValue(); 
    if ((value != null) && (value instanceof AbstractSessionBean)) { 
     ((AbstractSessionBean) value).destroy(); 
    } 

    // If the new value is an AbstractSessionBean, notify it 
    value = event.getSession().getAttribute(event.getName()); 
    if ((value != null) && (value instanceof AbstractSessionBean)) { 
     ((AbstractSessionBean) value).init(); 
    } 

} 

Dans Netbeans 5.5 et Sun application Server V9 la session AbstractSessionBean Beans travail bien et n'ont pas leur init() et destroy() méthodes() appelé tout le temps.

J'ai vérifié que mes beans session se trouvent dans faces-config.xml.

Alors, mon sentiment est que c'est ma configuration de Glassfish 2.1.1 ...

S'il vous plaît pouvez-vous aider?

Merci

P.S.

Juste pour ajouter à cette ....

je peux déployer exactement la même application de Netbeans 6.0.1:

  • Sun App serveur V9 et il fonctionne très bien avec la méthode init() beans session étant appelée une seule fois lors de la création de la session

  • Glassfish V2.1.1 et le bean Session init() et la méthode destroy() obtiennent appelé à plusieurs reprises.

+0

Juste pour ajouter à cette .... je peux déployer ** exactement ** la même application de Netbeans 6.0.1: - Sun App serveur V9 et il fonctionne très bien avec la session haricots init (La méthode est appelée une seule fois lors de la création de la session - Glassfish V2.1.1 et le bean session La méthode init() et destroy() obtiennent de façon répétée. – SteveGreenslade

Répondre

1

Ainsi, une nouvelle session est lancée à chaque requête. Cela peut signifier que le client ou le serveur ne prend pas en charge les cookies ou que la réécriture d'URL de l'application Web n'a pas été correctement implémentée dans le cas où les cookies du client sont désactivés. Le suivi des en-têtes de requête/réponse HTTP à l'aide d'un outil tel que Firebug doit fournir de nouvelles informations.Sur la première demande une nouvelle session client-serveur, le serveur aurait dû mettre l'en-tête Set-Cookie dans la réponse à l'ID de session:

alt text


Dans toutes les demandes ultérieures au cours de la même client- session du serveur, le client aurait dû mettre l'en-tête Cookie dans la demande avec le même ID de session:

alt text


Si l'un de ces éléments est manquant ou différent, vous devez connaître la cause du problème.

Questions connexes