2010-07-11 8 views
1

Y a-t-il une raison pour laquelle une variable ne peut pas être créée dans un Java ServletContextListener et sa valeur est définie comme pour tout autre. Ce que j'ai, c'est une ArrayList dans une SCL et une méthode dans une autre classe met à jour la ArrayList de temps en temps en utilisant des méthodes get et set statiques dans la SCL elle-même. Ma préférence ici est de ne pas utiliser ServletContext pour stocker ArrayList.Utilisation de variables dans ServletContextListener

Aucune nouvelle instance de l'écouteur n'est jamais créée.

code dans le SCL est similaire à ci-dessous:

private static ArrayList<String> strList; 

@Override 
public void contextInitialized(ServletContextEvent contextEvent) { 
    ArrayList<String> temp = someOtherMethod(); 
    setStrList(temp); 
} 

@Override 
public void contextDestroyed(ServletContextEvent contextEvent) {   
} 

public static ArrayList<String> getStrList() { 
    // ... 
    return strList; 
} 

public static void setStrList(ArrayList<String> temp) { 
    this.strList = temp; 
    // ... 
} 

Répondre

3

Votre « variable » doit vivre quelque part que vous pouvez obtenir.

Si vous êtes dans un ContextListener alors vous pouvez put un objet dans le ServletContext et get il plus tard de toute autre chose qui a accès à la même ServletContext. Après l'avoir obtenu, vous pouvez bien sûr le mettre à jour, s'il est modifiable comme un ArrayList.

Questions connexes