2010-12-02 3 views
0

Je tente de créer une configuration de test pour une application Apache/Tomcat héritée. Pour être honnête, je ne suis pas sûr que ce soit une 'application'. C'est une collection de JSP qui se trouvent dans un certain répertoire.Spécification de l'emplacement de WEB-INF pour une application Tomcat héritée

Les jsps sont affichés correctement. Le problème est que le dossier classes dans le dossier WEB-INF n'est pas trouvé - j'obtiens des exceptions NoClassDefFoundError.

Pour compliquer les choses, il y a deux 'apps' et ils partagent un WEB-INF:

4 drwxr-xr-x 8 root  root   4096 Dec 2 09:38 thing1 
4 drwxr-xr-x 8 root  root   8192 Dec 2 09:38 thing2 
4 drwxr-xr-x 8 root  root   4096 Dec 2 09:38 WEB-INF 

Donc, dans ce aseptisée-pour-votre-sanity exemple, nous voyons les deux 'applications' et le dossier WEB-INF partagé.

Une URL qui fonctionne est http: //mysite/thing1/index.jsp Lorsque nous essayons de vous connecter à partir de cette page, cependant, nous obtenons l'erreur NoClassDef.

Voici la partie pertinente du fichier server.xml. Ainsi, le chemin réel du fichier index.jsp mentionné plus haut est tony/ROOT/Thing1/index.jsp

<Host name="tony.com" appBase="tony/ROOT"> 
     <Alias>111.111.111.111</Alias> 
     <Context path="" docBase="" debug="0" reloadable="true" crossContext="true" /> 
    </Host> 

Ma question est, comment dois-je configurer Tomcat afin Thing1 & 2 utilisation WEB-INF pour leurs dossiers de lib et de classe? Ces 'applications' ne sont pas déployées en tant que fichiers de guerre ...

(note - il serait difficile de faire une copie de la boîte de production - il y a beaucoup de choses qui s'y déroulent. un environnement de test pour quelques applications)

+0

Vous avez fait un seul application avec deux sous-dossiers, pas deux applications. Quelle classe manque dans le classpath selon le 'NoClassDefFoundError'? Savez-vous que les fichiers '.class' libres devraient aller dans'/WEB-INF/classes' et que les classes empaquetées dans les fichiers '.jar' devraient aller dans'/WEB-INF/lib'? – BalusC

+0

Oui. Les fichiers de classe sont dans WEB-INF/classes, les jars dans WEB-INF/lib. La classe en question se trouve dans un _subdirectory_ dans les classes, en fonction de son nom de package. C'est là, Tomcat ne peut tout simplement pas le voir. Les privilèges sont ok. –

+0

J'ai déplacé les fichiers de tomcat/tony/ROOT vers tomcat/webapps selon le commentaire @ Bozho ci-dessous. Maintenant, j'obtiens l'erreur différente suivante: _org.apache.jasper.JasperException: Impossible de compiler la classe pour JSP: Une erreur s'est produite à la ligne: 7 dans le fichier java généré. Seul un type peut être importé. rpsi.rpsiMeWeb résout en un paquet_ Ceci est index.jsp. Il compilait correctement avant de déplacer le code vers _webapps_ alors ce n'est rien d'autre qu'un problème de configuration. –

Répondre

0

une application web doit avoir la structure suivante:.

tomcat/webapps/appname 
tomcat/webapps/appname/*.jsp 
tomcat/webapps/appname/WEB-INF 
tomcat/webapps/appname/WEB-INF/lib 
tomcat/webapps/appname/WEB-INF/classes 

donc de cette façon il devrait fonctionner, sans aucune configuration xml supplémentaires

+0

En effet, ce truc est tout là. Hmmm. –

+0

Alors le répertoire directement sous le répertoire webapps est 'l'application'? Et en tant que tel définit l'emplacement de WEB-INF si nous faisons une installation typique? –

+0

oui, c'est correct ... – Bozho

Questions connexes