2009-09-18 7 views
1

Lorsque vous essayez de définir attributs de contexte comme ceci:getServletContext(). GetAttribute() retourne la valeur null?

void init() 
{ 
    String testing = new String(); 
    testing = "This is a test"; 
    getServletContext().setAttribute("test", testing); 
} 

Dans un servlet, et d'obtenir l'attribut comme ceci:

String testing = (String) getServletContext().getAttribute("test") 

Dans une deuxième servlet, testing est null.

Est-ce que cela signifie que mes servlets sont dans des contextes séparés? Si oui, comment accéder aux attributs de contexte de la première servlet? S'il vous plaît fournir une référence pour cela car je suis relativement nouveau pour Java/servlets.

J'utilise Netbeans avec Glassfish 3.

EDIT: Ils sont tous les deux dans le même webapp et sont tous deux définis dans le même WEB-INF/web.xml

Répondre

4

Si les deux servlets sont dans la même application Web, par défaut, l'ordre d'initialisation est indéfini. Il se peut donc que votre "deuxième" servlet soit initialisée avant la "première" (selon l'ordre dans le fichier web.xml). Vous pouvez le corriger en ajoutant une balise de charge en démarrage à la balise servlet:

<servlet> 
    <servlet-name>first<servlet-name> 
    ... 
    <load-on-startup>1<load-on-startup> 
</servlet> 

<servlet> 
    <servlet-name>second<servlet-name> 
    ... 
    <load-on-startup>2<load-on-startup> 
</servlet> 
+0

Merci !! Cela semble fonctionner. Cela m'a rendu fou toute la matinée. Savez-vous pourquoi cela compte? – moshen

0

Je crois que les deux servlets doivent être dans l'application web, c'est-à-dire dans le même fichier war, pour que cela fonctionne.

0

Contexte == == WAR webapps

deux servlet doit vivre sous le même webapp pour partager leur contexte. Vérifiez si les deux classes de servlet sont sous les mêmes classes WEB-INF /.

+0

Ils sont tous les deux dans le même webapp et sont toutes deux définies dans le même WEB-INF/web.xml – moshen

Questions connexes