Problème de barre oblique de fin avec Tomcat 7 avec les applications Web

13

Récemment, j'ai mis à niveau mon serveur tomcat de la version 6.x à la version 7.x la plus récente.

J'ai eu peu de problèmes, espérant obtenir de l'aide.

J'ai une application qui appelle MyApp

Sur tomcat6, lorsque je suis allé sur http://www.example.com/MyApp/page/ , j'obtiendrais normalement le résultat souhaité.

Maintenant, sur tomcat7, en visitant la même URL exacte (avec la barre oblique de fin), je reçois l'erreur: "La ressource n'est pas disponible", car le tomcat pense que / MyApp / page / est un nom Webapp complet au lieu d'être des noms de demande sous la webapp MyApp.

J'ai besoin de la barre oblique à la fin de mon URL car sinon j'obtiens l'erreur: "HTTP Status 405 - Request method 'GET' not supported" ce qui est OK car je n'ai vraiment pas autorisé la méthode GET à la requête "page" .

Si quelqu'un sait comment dire à tomcat que la barre oblique de fin après le chemin de la webapp existante ne doit pas supposer la rediriger vers une nouvelle webapp appelle la "chaîne" entière et simplement traiter la demande comme sur tomcat6, ce serait génial!


la source
Y a-t-il un servlet par défaut dans le web.xmlmappé /*? Sinon, tomcat utilise une liste de fichiers de bienvenue. Normalement, seul le premier segment de chemin est interprété comme une racine de contexte. Donc, ne pas trouver votre application web ne semble pas être le problème.
mana
le premier segment de chemin est une racine de contexte et fonctionne vraiment, il le trouve, mais les chemins suivants au lieu de faire partie du premier chemin, la recherche tomcat pour webapp avec tout le chemin .. Je n'ai rien de configuré qui n'est pas par défaut ..
Je ne comprends pas vraiment ce que vous dites. Pardon. Si vous avez une application Web configurée avec le nom, MyApptomcat utilisera ce contexte d'application Web en utilisant le chemin restant page/. Sinon, il recherchera le ROOTcontexte, en utilisant le chemin complet pour une recherche.
mana
J'ai une webapp appelle MyApp et example.com/MyApp fonctionne, mais lorsque je visite example.com/MyApp/foo au lieu de chercher du contenu foo dans MyApp, il recherche une webapp appelle "MyApp / foo /" et ne cherche pas le contenu sous MyApp appelle foo ..

Réponses:

1

Question ancienne, mais depuis que je me suis récemment battu avec la barre oblique de fin dans Tomcat 8, je sais que les problèmes avec la barre oblique continuent de tourmenter le monde des utilisateurs de Tomcat. :-)

Vous pourriez rencontrer des changements dans la façon dont Tomcat gère les redirections lors du chargement du contexte racine. Consultez le bogue 58660 et lisez une partie de la discussion des développeurs là-bas. Vous devrez peut-être désactiver le mappeur par défaut en modifiant l' mapperContextRootRedirectEnabledattribut de l' Contextélément dans conf/context.xml.

Peter
la source
0

Vérifiez votre liste de fichiers de bienvenue. Ce qui suit est de la spéculation ...

Je crois que l'essentiel du problème est lorsque Tomcat est présenté avec un / - Il a quelques options - Itérer sur la liste des fichiers de bienvenue - Sur rien étant là - afficher la liste des répertoires (si activé)

Voici où le plaisir commence ... Beaucoup de gens veulent utiliser * .do pour des choses comme des entretoises. Ils veulent donc que index.do soit la page d'accueil. Ou également commun est index.jsp où * .jsp est mappé au JspServlet.

Voici où les choses s'amusent. Disons donc que vos fichiers de bienvenue sont index.jsp, index.do.

Ce que fait Tomcat (IIRC), c'est d'abord parcourir la liste des fichiers de bienvenue à la recherche de ressources de ce nom.

Ensuite, il effectuera une deuxième passe à la recherche de mappages qui correspondent. Donc, si index.jsp est spécifié dans la liste de bienvenue et * .jsp est mappé. Ensuite, tomcat essaiera de transmettre à index.jsp et vous obtiendrez un 404.

Je vais donc supposer que vous avez un mappage de servlet et un fichier de bienvenue qui se chevauchent. Et le comportement de cette servlet ne prend pas en charge GET. (D'où le 405)

Tim Funk
la source
0

Si votre projet utilise le module Web dynamique de la v2.2, vous devez créer explicitement au moins un fichier (peut être un fichier html vide) présent dans web.xml (par exemple: index.html) dans votre WebContent.

Snehal
la source
1
c'est un commentaire; pas une réponse; veuillez envisager de commenter à l'avenir lorsque vous obtiendrez plus de points. merci
Hrvoje Špoljar