Umbrechen von Anforderungsparametern mit HTTPServletRequestWrapper

Ich habe einen Filter, der REST-Aufrufe authentifiziert / autorisiert. Dieser Filter muss auf die Anforderungsparameter zugreifen, damit ich einen benutzerdefinierten HTTPServletRequestWrapper dafür geschrieben habe.

import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

public class WrapperRequest extends HttpServletRequestWrapper {
    private Map<String, String[]> requestParams = null;

    public WrapperRequest(final ServletRequest request) {
        super((HttpServletRequest) request);

    }

    @Override
    public String getParameter(final String name) {
        if (getParameterMap().get(name) != null) {
            return getParameterMap().get(name)[0];
        } else {
            getParameterMap().get(name)[0] = super.getParameter(name);
            requestParams.put(name, getParameterMap().get(name));
            return requestParams.get(name)[0];
        }

    }

    @Override
    public Map<String, String[]> getParameterMap() {
        if (requestParams == null) {
            requestParams = new HashMap<String, String[]>();
            requestParams.putAll(super.getParameterMap());
        }
        return Collections.unmodifiableMap(requestParams);
    }

    @Override
    public Enumeration<String> getParameterNames() {
        return Collections.enumeration(getParameterMap().keySet());
    }

    @Override
    public String[] getParameterValues(final String name) {
        return getParameterMap().get(name);
    }
}

In meiner Filter doFilter Methode:

public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws IOException, ServletException {


    final WrapperRequest wrappedRequest = new WrapperRequest(request);
    Map<String, String[]> paramMap = wrappedRequest.getParameterMap();
    chain.doFilter(wrappedRequest, response);

Aber ich bekomme die folgende Warnung

WARNUNG: Eine Servlet-Anforderung an den URI enthält Formularparameter im Anforderungshauptteil, der Anforderungshauptteil wurde jedoch vom Servlet oder einem Servlet-Filter verwendet, der auf die Anforderungsparameter zugreift. Nur Ressourcenmethoden, die @FormParam verwenden, funktionieren wie erwartet. Ressourcenmethoden, die den Anforderungshauptteil auf andere Weise verbrauchen, funktionieren nicht wie erwartet.

Ich setze dies in Tomcat ein. Hilfe!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage