上一篇关于Listener理解成监听信息,那么Valve就是用来过滤信息用的,而最简单以及朴实无华的Valve非org.apache.catalina.valves.AccessLogValve莫属。
AccessLogValve的类图设计
自定义的Valve
首先查看下实现ValveBase接口的Valve
设计一个固定的ip和地址才能进来valve,如果按照传统方式有一下几种合适的方案
1.可能是在apache、nginx上进行拦截,确实这种方式最容易
2.类似的struts2、springMVC提供这种ip拦截的方案
今天我提供额外的方式,其实只是提供好玩的想法,具体用Vavle能够在那些方面,仁者见仁、智者见智。
Tomcat的valve的设计模式就是采用责任链模式,挺好用的设计模式。
import java.io.IOException; import java.util.regex.Pattern; import javax.servlet.ServletException; import org.apache.catalina.connector.Request; import org.apache.catalina.connector.Response; import org.apache.catalina.valves.RequestFilterValve; public final class EwellBlockAccessByPathValve extends RequestFilterValve { private String path; private Pattern[] paths; @Override public String getInfo() { return info; } public String getPath() { return path; } public void setPath(String path) { paths = precalculate(path); this.path = path; } @Override public void invoke(Request request, Response response) throws IOException, ServletException { System.out.println("---------------EwellBlockAccessByPathValve-----------------"); String remoteAddr = request.getRemoteAddr(); String requestedPath = request.getRequestURI(); boolean pathBlocked = false; getNext().invoke(request, response); } }
如何配置呢?类似的配置足矣!
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- Access log processes all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host>
配置完毕后,运行http://127.0.0.1:8080
相关推荐
Tomcat Valve使用sFlow( )实现日志记录。 目的是对大型Web群集进行连续,实时的监视。 sFlow机制允许使用sFlow高效的XDR编码UDP“推送”模型来报告URL事务的1-in-N随机样本,以及最重要计数器的定期快照。 可以...
使用说明: 1、将zip解压出来的jar包放到tomcat的lib目录下. 2、修改tomcat/conf下的context.xml文件,示例如下: <!-- Default set of monitored resources --> <WatchedResource>WEB-INF/web.xml <!-- ...
<Valve className="com.orangefunction.tomcat6.redissessions.RedisSessionHandlerValve"/> <Manager className="com.orangefunction.tomcat6.redissessions....
本文档对tomcat的配置及使用进行了详细的介绍,包括监听端口的设置,开启多个监听端口,全局变量的设置,web服务的设置等,以及端口如何与服务主机绑定等。本文还介绍了如何部署多个项目。
<Valve className="com.usky.tomcat7rediscluster.RedisSessionHandlerValve"/> <Manager className="com.usky.tomcat7rediscluster.RedisSessionManager" host="127.0.0.1" port="6379" database="0" ...
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="localhost" port="6379" ...
一个监控应用程序,它通过 Valve 注册到/来自 Tomcat 的每个 Http 请求和响应,并将信息存储到 HyperSql 数据库中。 一个监控工具,HyperSQL UI 显示请求和响应的信息。
使用 apache 和 tomcat 配置一个可以应用的 web 网站,要达到以下要求: 1、 Apache 做为 HttpServer ,后面连接多个 tomcat 应用实例,并进行负载均衡。 2、 为系统设定 Session 超时时间,包括 Apache 和 tomcat 3...
tomcat-redis集成session 的包,适用tomcat7,有三个,直接放到/tomcat/lib下面,修改context.xml,添加两行<Valve className=...
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="localhost" port="6379" ...
作为一个开源和小型的轻量级应用服务器,Tomcat 易于使用,便于部署,但Tomcat本身是一个非常复杂的系统,包含了很多功能模块。这些功能模块构成了Tomcat的核心结构。《深入剖析Tomcat》从最基本的HTTP请求开始,...
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="192.168.6.216" port=...
Tomcat伺服器 安裝MySQL的JDBC-Driver Tomcat的安裝與設定 JavaEE架構 Web Container介紹 Web Application整合DB 安全設定 Valve
使用redis实现tomcat项目session共享 tomcat redis session 最新jar包 7.0.82 把jar包导入 tomcat lib目录 配置context.xml <Valve className=...
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" database="1" ...
<Valve className="com.s.tomcat.redissessions.RedisSessionHandlerValve"/> <Manager className="com.s.tomcat.redissessions.RedisSessionManager" host="192.168.10.162" port="6379" database="0" ...
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="localhost" //redis所在...
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="192.168.24.131" ---...
-- <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\\\\\\\\.\\\\\\\\d+\\\\\\\\.\\\\\\\\d+\\\\\\\\.\\\\\\\\d+|::1|0:0:0:0:0:0:0:1" />--> (3)关闭tomcat tomcat/bin ./...
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="127.0.0.1" port=...