2008-09-24 3 views
0

J'ai un problème lorsque Tomcat traite des informations de chemin supplémentaires dans le nom du servlet. Ceci casse un tas de fonctionnalités RESTFul dans notre webapp (nous utilisons des informations de chemin supplémentaires plutôt que des paires? Name = value pour les liens amis du robot).Comment mapper une servlet pour obtenir des informations de chemin supplémentaires avec getPathInfo()

Cela fonctionnait correctement avant, mais il s'est cassé après l'ajout de mappages explicites et la suppression de la servlet Invoker que nous utilisions précédemment pour servir nos servlets. Par exemple, considérons le lien suivant:

http://mydomain.com/servlet/MyServlet/param1/param2/param3

MyServlet utilisé pour être appelé correctement, et "/ param1/param2/param3" a été retourné par getPathInfo() sur le HttpServletRequest.

Maintenant, il semble que Tomcat tente de charger myServlet/param1/param2/param3 comme servlet:

[23/Sep/2008: 16: 44: 23 -0700] « GET /servlet/myServlet/param1/param2/param3 HTTP/1.0" 404

Voici la façon dont ils sont définis et mis en correspondance dans le web.xml, et frapper juste "http://mydomain.com/servlet/MyServlet" fonctionne très bien.

<servlet> 
    <servlet-name>MyServlet</servlet-name> 
    <servlet-class>com.myclass.etcetera.MyServlet</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>MyServlet</servlet-name> 
    <url-pattern>/servlet/MyServlet</url-pattern> 
</servlet-mapping> 

Répondre

2

Vous devez mapper à/servlet/myServlet/*

Il vous manque le "/ *".

Questions connexes