Скорее всего, вам нужно указать Servlet 2.3 спецификация или новее, как он представил Filter
.В соответствии с документами:
Фильтры - это новая функция в API сервлетов Java для версии 2.3.
Похоже, вам нужно удалить универсальные элементы, как они были представлены вJava 1.5.ThreadLocal
доступно из Java 1.2, хотя в 1.5 был введен метод remove()
.Код должен выглядеть примерно так:
public class RequestContext implements Filter {
private static final ThreadLocal REQUEST_HOLDER = new ThreadLocal();
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) throws IOException, ServletException {
if (servletRequest instanceof HttpServletRequest) {
REQUEST_HOLDER.set(servletRequest);
}
try {
chain.doFilter(servletRequest, servletResponse);
} finally {
REQUEST_HOLDER.set(null);
}
}
/**
* @return the HttpServletRequest for the current thread.
*/
public static HttpServletRequest getRequest() {
return (HttpServletRequest) REQUEST_HOLDER.get();
}
@Override
public void destroy() {
}
}