【发布时间】:2016-03-18 03:36:30
【问题描述】:
我需要在收到请求之前验证标头。我发现tomcat阀门可以帮助它。我按照以下步骤操作,但不调用阀门:
-
制作一个 maven 项目并在其中执行此代码。
包 cz.ValveTest; 导入 java.io.IOException; 导入 java.util.Enumeration; 导入 java.util.logging.Level; 导入 java.util.logging.Logger; 导入 javax.servlet.ServletException; 导入 javax.servlet.http.HttpServletRequest; 导入 org.apache.catalina.connector.Request; 导入 org.apache.catalina.connector.Response; 导入 org.apache.catalina.valves.ValveBase; 公共类 ProcessingValve 扩展 ValveBase { private static final Logger logger = Logger.getLogger(ProcessingValve.class.getName()); @覆盖 公共无效调用(请求请求,响应响应)抛出 IOException, Servlet异常{
而(headerNames.hasMoreElements()){ 字符串头 = 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); 制作jar并将jar放入tomcat/lib文件夹中
-
在 server.xml 中添加这一行
<valve className="cz.ValveTest.ProcessingValve"/> 重启tomcat。
-
现在我用标题访问我的网络服务:
期望:100-继续
但是使用这个配置和代码阀门在http命中时没有被调用。如果有人知道为什么没有调用tomcat阀门,请帮助。
【问题讨论】:
-
你把
<valve>元素放在server.xml文件的什么地方?
标签: java web-services tomcat http-headers