2011-09-15 2 views
3

Tomcat6 ignore toujours mon fichier META-INF/context.xml. Je continue d'obtenir "Nom n'est pas lié dans ce contexte" quand j'essaie de chercher "tt" (s'il vous plaît voir 'détails').Tomcat6 ignore META-INF/context.xml

Lorsque je mets le contenu de META-INF/context.xml à l'intérieur de la balise 'context' dans server.xml, cela fonctionne. J'ai également vérifié que $ Tomcat-base/Catalina/localhost est vide, donc mon fichier META-INF/context.xml n'est pas substitué.


détails:

Tomcat version: 6.0.10

Voici ma structure Webroot:

Webroot
              | méta--INF
              |             | -context.xml
              |
              | -WEB-INF
                          | -web.xml

Contenu de context.xml:

<Context> 
    <Environment name="tt" value="this is a string" type="java.lang.String"></Environment> 
</Context> 

tag Contexte de cette Webroot dans server.xml:

<Context path="/test" docBase="E:\javaProjects\TestProject\Webroot" reloadable="true"></Context> 

La façon dont je regarde pour "tt":

... 
Context ic = new InitialContext(); 
Context ec = (Context) ic.lookup("java:comp/env"); 
String str = (String) ec.lookup("tt"); 
System.out.println("str is "+str); 

L'erreur que je reçois:

javax.naming.NameNotFoundException: Name tt is not bound in this context 
+0

https://issues.apache.org/bugzilla/show_bug.cgi?id=42747 Je me demande si mon problème est un bug comme décrit dans le lien – stackoverflower

Répondre

5

Je J'ai eu votre code de travail SI je supprime le <Context> à partir du server.xml et le définir seulement dans le META-INF/context.xml

Cela ne fonctionne pas lorsque le <Context> est défini aux deux endroits.

Deuxièmement, changer votre type de chaîne, au lieu de Integer

<Environment name="tt" value="this is a string" type="java.lang.String"></Environment> 
</Context> 
+0

Merci pour l'aide. Cet entier était une faute de frappe car j'ai utilisé Integer au départ. La chose est, si je supprime de server.xml, puis tomcat n'a aucun moyen de savoir où trouver mon dossier Webroot, sauf si je mets le Webroot dans le dossier webapps de tomcat. C'est ce que tu veux dire? – stackoverflower

+0

Idéalement, Tomcat déchiffrera automatiquement le chemin de la docBase, donc pour votre nom de chemin "/ test". Au lieu de conserver le projet dans 'E: \ javaProjects \ TestProject \ Webroot', il se trouverait dans' TOMCAT_HOME \ webapps \ test', donc vous n'aurez pas du tout besoin de l'entrée dans server.xml. – JoseK

0

vous ne pouvez pas avoir deux contextes dans un hôte défini dans deux fichiers différents, qui était la racine du problème.Pour plus d'informations, lisez l'article this.