我想过滤对我的球衣 servlet 的所有请求,所以我这样做:
<filter-mapping>
<filter-name>jersey</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
不幸的是,这有捕获开发控制台的副作用(http://localhost:8888/_ah/admin)
有没有办法可以从过滤器中排除匹配“/_ah/*”的路径?
或者也许是实现相同目标的更好方法?
我想过滤对我的球衣 servlet 的所有请求,所以我这样做:
<filter-mapping>
<filter-name>jersey</filter-name>
<url-pattern>*</url-pattern>
</filter-mapping>
不幸的是,这有捕获开发控制台的副作用(http://localhost:8888/_ah/admin)
有没有办法可以从过滤器中排除匹配“/_ah/*”的路径?
或者也许是实现相同目标的更好方法?
感谢@adarshr 的建议,我开始考虑扩展 Jersey 过滤器 servlet,以便我可以跳过某些路径。那时我意识到它已经支持忽略路径作为初始化参数。
<init-param>
<param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name>
<param-value>/(js|css|(WEB-INF/jsp)|_ah)/.*</param-value>
</init-param>
(我什至已经在从某个地方粘贴代码而没有阅读它之后使用它!)
我建议有一个 servlet,您可以使用它来配置所有过滤器映射。因此 servlet 将处理所有查询并相应地重新路由它们,因为 web.xml 不允许正则表达式映射。
我们使用 Google Guice 的 guiceServlet 来做同样的事情:
然后在configureServlets
我们执行以下操作:
serveRegex("/(?!_ah).*").with(JerseyGateway.class);
您可以在此处查看有关该主题的许多建议。