2 votes

Comment puis-je filtrer toutes les requêtes sauf celles de la console de développement du moteur d'application dans le fichier web.xml ?

Je veux filtrer toutes les requêtes vers mon servlet jersey et je fais ceci :

<filter-mapping>
   <filter-name>jersey</filter-name>
   <url-pattern>*</url-pattern>
</filter-mapping>

Malheureusement, cela a pour effet secondaire de bloquer la console de développement (http://localhost:8888/\_ah/admin).

Existe-t-il un moyen d'exclure du filtre les chemins correspondant à "/_ah/*" ?

Ou peut-être un meilleur moyen d'obtenir la même chose ?

4voto

matt burns Points 6072

Grâce à la suggestion de @adarshr, j'ai commencé à chercher à étendre le servlet de filtre Jersey afin de pouvoir sauter certains chemins. C'est alors que j'ai réalisé qu'il supporte déjà les chemins à ignorer comme paramètre d'initialisation.

<init-param>
    <param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name>
    <param-value>/(js|css|(WEB-INF/jsp)|_ah)/.*</param-value>
</init-param>

(J'étais même déjà en train de l'utiliser après avoir collé le code de quelque part sans le lire !)

1voto

husayt Points 4384

Je conseillerais d'avoir une servlet que vous pouvez utiliser pour configurer tous les mappages de filtres. Ainsi, la servlet traitera toutes les requêtes et les redirigera en conséquence, car le web.xml ne permet pas de mappage regex.

Nous utilisons guiceServlet de Google Guice pour faire la même chose :

Ensuite, dans configureServlets nous faisons ce qui suit :

  serveRegex("/(?!_ah).*").with(JerseyGateway.class);

Il existe un certain nombre de suggestions sur le sujet que vous pouvez consulter aquí .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X