Настройка:
Resteasy + Spring Security на Tomcat.
Обмен данными между клиентом и сервером осуществляется в формате JSON.
Имейте средства отображения исключений, чтобы возвращать сообщения в формате JSON, когда приложение генерирует любое исключение.
Цель:
Всегда возвращайте правильно отформатированное сообщение об ошибке JSON с сервера всякий раз, когда что-то идет не так.
Что происходит:
Уровень Spring Security вызывается до вызова метода foo () контейнером сервлета. Если этот уровень завершается с ошибкой (например, неправильный идентификатор пользователя), исключение выдается даже до того, как сервлет вызван, и, следовательно, ошибка не отформатирована должным образом.
Любая идея, как обойти это и вернуть ошибку JSON в этом случае?
Спасибо.
Часть моего web.xml, если это вообще полезно:
<filter>
<filter-name>securityPropagationFilter</filter-name>
<filter-class>com.foo.bar.context.servlet.SecurityContextPropagationFilter</filter-class>
</filter>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter>
<filter-name>loggingFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>securityPropagationFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>loggingFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<listener>
<listener-class>
org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
</listener-class>
</listener>
<servlet>
<servlet-name>
Resteasy
</servlet-name>
<servlet-class>
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
</servlet-class>
</servlet>