问题
I need verify header before receive the request. I found that tomcat valve can help in it. I follow these steps but valve is not called:
make a maven project and do this code in it.
package cz.ValveTest; import java.io.IOException; import java.util.Enumeration; import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import org.apache.catalina.connector.Request; import org.apache.catalina.connector.Response; import org.apache.catalina.valves.ValveBase; public class ProcessingValve extends ValveBase { private static final Logger logger = Logger.getLogger(ProcessingValve.class.getName()); @Override public void invoke(Request request, Response response) throws IOException, ServletException {
while (headerNames.hasMoreElements()) { String header = headerNames.nextElement(); logger.log(Level.INFO, "Header --> {0} Value --> {1}", new Object[]{header, httpServletRequest.getHeader(header)}); }HttpServletRequest httpServletRequest = request.getRequest(); Enumeration<String> headerNames = httpServletRequest.getHeaderNames(); logger.info("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
} }getNext().invoke(request, response);make jar and put jar inside tomcat/lib folder
add this line in server.xml
<valve className="cz.ValveTest.ProcessingValve"/>restart tomcat.
Now I hit my web service with header:
Expect : 100-continue
but using this configuration and code valve is not called on http hit.If any one knew why tomcat valve is not called please help.
回答1:
The tags in server.xml are case sensitive.
So try this :
<Valve className="cz.ValveTest.ProcessingValve"/>
来源:https://stackoverflow.com/questions/34236820/verify-header-before-request-receive-in-tomcat