2012-05-17 1 views
2

Я хочу, чтобы фильтровать все запросы к моему джерси сервлету, так что я это сделать:Как я могу фильтровать все, кроме запросов приложения двигателя консоли разработчика в web.xml

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

несчастлив, это имеет побочный эффект ловли консоль dev (http: // localhost: 8888/_ah/admin)

Есть ли способ, которым я могу исключить пути, соответствующие «/ _ah/*» из фильтра?

Или, может быть, лучший способ достичь того же?

+1

Посмотрите на это: http://stackoverflow.com/questions/3125296/can-i -exclude-некоторый железобетонный-URLs-из-URL-шаблон внутри фильтр-отображение – adarshr

ответ

4

Благодаря предложению @adarshr я начал изучать расширение сервлета фильтра Джерси, чтобы я мог пропустить определенные пути. Тогда я понял, что он уже поддерживает пути для игнорирования в качестве параметра init.

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

(я уже даже использовать его после вставки в код из где-то, не читая!)

1

Я бы посоветовал иметь сервлет, который вы можете использовать для настройки всех фильтров. Таким образом, сервлет обрабатывал бы все запросы и перенаправлял их соответственно, так как web.xml не разрешает отображение регулярных выражений.

Мы используем guiceServlet от Google Guice, чтобы сделать то же самое:

Тогда в configureServlets мы делаем следующее:

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

Есть целый ряд предложений по этой теме вы можете посмотреть на here.