`
cywhoyi
  • 浏览: 412632 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
阅读更多

上一篇关于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 &quot;%r&quot; %s %b" />

      </Host>

 

 

配置完毕后,运行http://127.0.0.1:8080



 

 

  • 大小: 73.9 KB
  • 大小: 34.7 KB
  • 大小: 11.8 KB
  • 大小: 37.7 KB
3
1
分享到:
评论
2 楼 cywhoyi 2014-06-07  
wwwcomy 写道
这。。。 LZ能不能再写细一点

比如AccessLogValve的具体作用

这个好像在默认server.xml里面是注释掉的,加上有啥效果~

当然可以啦,模仿一个Valve可能产生效果更佳理想
1 楼 wwwcomy 2014-06-06  
这。。。 LZ能不能再写细一点

比如AccessLogValve的具体作用

这个好像在默认server.xml里面是注释掉的,加上有啥效果~

相关推荐

    tomcat-sflow-valve:自动从code.google.comptomcat-sflow-valve导出

    Tomcat Valve使用sFlow( )实现日志记录。 目的是对大型Web群集进行连续,实时的监视。 sFlow机制允许使用sFlow高效的XDR编码UDP“推送”模型来报告URL事务的1-in-N随机样本,以及最重要计数器的定期快照。 可以...

    tomcat7使用redis管理session需要的jar包

    使用说明: 1、将zip解压出来的jar包放到tomcat的lib目录下. 2、修改tomcat/conf下的context.xml文件,示例如下: &lt;!-- Default set of monitored resources --&gt; &lt;WatchedResource&gt;WEB-INF/web.xml &lt;!-- ...

    基于tomcat的redis配置

    &lt;Valve className="com.orangefunction.tomcat6.redissessions.RedisSessionHandlerValve"/&gt; &lt;Manager className="com.orangefunction.tomcat6.redissessions....

    tomcat服务器的配置详解

    本文档对tomcat的配置及使用进行了详细的介绍,包括监听端口的设置,开启多个监听端口,全局变量的设置,web服务的设置等,以及端口如何与服务主机绑定等。本文还介绍了如何部署多个项目。

    Tomcat7基于Redis的Session共享

    &lt;Valve className="com.usky.tomcat7rediscluster.RedisSessionHandlerValve"/&gt; &lt;Manager className="com.usky.tomcat7rediscluster.RedisSessionManager" host="127.0.0.1" port="6379" database="0" ...

    tomcat-redis-session-manager-master-2.0.0

    &lt;Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /&gt; &lt;Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="localhost" port="6379" ...

    Tomcat Valve JDBC with HyperSQL-开源

    一个监控应用程序,它通过 Valve 注册到/来自 Tomcat 的每个 Http 请求和响应,并将信息存储到 HyperSql 数据库中。 一个监控工具,HyperSQL UI 显示请求和响应的信息。

    APACHE 2.2.9+TOMCAT6.0.18配置负载均衡

    使用 apache 和 tomcat 配置一个可以应用的 web 网站,要达到以下要求: 1、 Apache 做为 HttpServer ,后面连接多个 tomcat 应用实例,并进行负载均衡。 2、 为系统设定 Session 超时时间,包括 Apache 和 tomcat 3...

    tomcat-redis集成包

    tomcat-redis集成session 的包,适用tomcat7,有三个,直接放到/tomcat/lib下面,修改context.xml,添加两行&lt;Valve className=...

    tomcat7-redis-session 相关的三个jar,详情配置看readme.txt文件

    &lt;Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /&gt; &lt;Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="localhost" port="6379" ...

    《深入剖析Tomcat(中文版+英文版)》.rar

    作为一个开源和小型的轻量级应用服务器,Tomcat 易于使用,便于部署,但Tomcat本身是一个非常复杂的系统,包含了很多功能模块。这些功能模块构成了Tomcat的核心结构。《深入剖析Tomcat》从最基本的HTTP请求开始,...

    tomcat8实现session共享jar包

    &lt;Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /&gt; &lt;Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="192.168.6.216" port=...

    Tomcat伺服器實務

    Tomcat伺服器 安裝MySQL的JDBC-Driver Tomcat的安裝與設定 JavaEE架構 Web Container介紹 Web Application整合DB 安全設定 Valve

    tomcat-redis-session-manager 所需jar包 共9个

    使用redis实现tomcat项目session共享 tomcat redis session 最新jar包 7.0.82 把jar包导入 tomcat lib目录 配置context.xml &lt;Valve className=...

    tomcat session共享的依赖包

    &lt;Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /&gt; &lt;Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" database="1" ...

    tomcat8.5-redis-session-manager

    &lt;Valve className="com.s.tomcat.redissessions.RedisSessionHandlerValve"/&gt; &lt;Manager className="com.s.tomcat.redissessions.RedisSessionManager" host="192.168.10.162" port="6379" database="0" ...

    redis集群所需jar包(tomcat7)

    &lt;Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /&gt; &lt;Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="localhost" //redis所在...

    支持tomcat8+redis session共享jar包

    &lt;Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /&gt; &lt;Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="192.168.24.131" ---...

    mysql-java8-tomcat8

    -- &lt;Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\\\\\\\\.\\\\\\\\d+\\\\\\\\.\\\\\\\\d+\\\\\\\\.\\\\\\\\d+|::1|0:0:0:0:0:0:0:1" /&gt;--&gt; (3)关闭tomcat tomcat/bin ./...

    tomcat-redis-session-manager-master-2.0.0.jar

    &lt;Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /&gt;   &lt;Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="127.0.0.1" port=...

Global site tag (gtag.js) - Google Analytics