Verify header before request receive in tomcat

心已入冬 提交于 2019-12-11 09:23:05

问题


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:

  1. 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 {
    
    
    HttpServletRequest httpServletRequest = request.getRequest();
    
     Enumeration<String> headerNames = httpServletRequest.getHeaderNames();
     logger.info("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
    
    while (headerNames.hasMoreElements()) { String header = headerNames.nextElement(); logger.log(Level.INFO, "Header --> {0} Value --> {1}", new Object[]{header, httpServletRequest.getHeader(header)}); }
      getNext().invoke(request, response);  
    
    } }
  2. make jar and put jar inside tomcat/lib folder

  3. add this line in server.xml

    <valve className="cz.ValveTest.ProcessingValve"/>
    
  4. restart tomcat.

  5. 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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!