文档章节

Zipkin-1.19.0学习系列12: 如何定制Brave-Web-Filter

强子大叔的码田
 强子大叔的码田
发布于 2017/01/10 22:29
字数 354
阅读 413
收藏 4

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

撸了一个类如下所示:

1)BraveFilter.java

package com.freedom.monitor.myeye.client.tomcat;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import com.github.kristofa.brave.Brave;
import com.github.kristofa.brave.servlet.BraveServletFilter;

//使用方法见下方,在你的tomcat里新建一个类,正如下面被注释的几行所示即可
//
//@WebFilter(filterName = "MyBraveFilter", urlPatterns = { "/*" })
//public class MyBraveFilter extends BraveFilter {

//}
/**
 * 
 * @author liuzhq
 * @version 0.1
 */
public class BraveFilter implements Filter {

	private static Filter filter = null;

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		System.out.println("MyBraveFilter.onStartup invoked...");
		// 创建Brave对象
		Brave brave = new Brave.Builder("MyServiceName").build();
		// 创建Filter&赋值
		filter = BraveServletFilter.create(brave);
		filter.init(filterConfig);
		System.out.println("***--->BraveServletFilter add succeed...");

	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		filter.doFilter(request, response, chain);
	}

	@Override
	public void destroy() {
		filter.destroy();
	}
	// public class MyBraveFilter implements WebApplicationInitializer {
}

2)在tomcat里定义一个类MyBraveFilter.java

package com.freedom.monitor.filter;

import javax.servlet.annotation.WebFilter;

import org.springframework.core.annotation.Order;

import com.freedom.monitor.myeye.client.tomcat.BraveFilter;

//public class MyBraveFilter implements WebApplicationInitializer {
@WebFilter(filterName = "MyBraveFilter", urlPatterns = { "/*" })
public class MyBraveFilter extends BraveFilter {
	// 一切的实现都在父类: BraveFilter 中
}

注意这里,理论上应该保证在第1个被调用。

如何保证filter在第一个?读者可以自行揣摩下。

 

---下面是debug的一些信息

0)初始化时所在的栈

localhost-startStop-1[1] where
  [1] com.freedom.monitor.myeye.client.tomcat.BraveFilter.init (BraveFilter.java:41)
  [2] org.apache.catalina.core.ApplicationFilterConfig.initFilter (ApplicationFilterConfig.java:279)
  [3] org.apache.catalina.core.ApplicationFilterConfig.getFilter (ApplicationFilterConfig.java:260)
  [4] org.apache.catalina.core.ApplicationFilterConfig.<init> (ApplicationFilterConfig.java:105)
  [5] org.apache.catalina.core.StandardContext.filterStart (StandardContext.java:4,563)
  [6] org.apache.catalina.core.StandardContext.startInternal (StandardContext.java:5,205)
  [7] org.apache.catalina.util.LifecycleBase.start (LifecycleBase.java:183)
  [8] org.apache.catalina.core.ContainerBase.addChildInternal (ContainerBase.java:752)
  [9] org.apache.catalina.core.ContainerBase.addChild (ContainerBase.java:728)
  [10] org.apache.catalina.core.StandardHost.addChild (StandardHost.java:734)
  [11] org.apache.catalina.startup.HostConfig.deployWAR (HostConfig.java:952)
  [12] org.apache.catalina.startup.HostConfig$DeployWar.run (HostConfig.java:1,823)
  [13] java.util.concurrent.Executors$RunnableAdapter.call (Executors.java:511)
  [14] java.util.concurrent.FutureTask.run (FutureTask.java:266)
  [15] java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1,142)
  [16] java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:617)
  [17] java.lang.Thread.run (Thread.java:745)

1)init时的信息

5
83            this.filterConfig = filterConfig;

localhost-startStop-1[1] print filterConfig

filterConfig = "ApplicationFilterConfig[name=MyBraveFilter, filterClass=com.freedom.monitor.filter.MyBraveFilter]"

 

© 著作权归作者所有

强子大叔的码田

强子大叔的码田

粉丝 916
博文 1444
码字总数 1227067
作品 9
南京
架构师
私信 提问
强子哥哥/MyEye

#MyEye 公司内部接入了64个产品,每天写入HBase数据量(100G/天).水平扩展就可以支持日TB级数据量。 上线12个月非常稳定! #官方QQ群: 120734278 技术选型如下:(其中MyThrift请参考本人的另外...

强子哥哥
2016/12/24
0
0
服务化改造实践(三) | Dubbo + Zipkin

随着业务的发展,应用的规模不断的扩大,传统的应用架构无法满足诉求,服务化架构改造势在必行,以 Dubbo 为代表的分布式服务框架成为了服务化改造架构中的基石。随着微服务理念逐渐被大众接...

阿里云云栖社区
2018/10/24
0
0
ZipKin原理学习--ZipKin入门介绍

ZipKin入门介绍 Zipkin是一款开源的分布式实时数据追踪系统(Distributed Tracking System),基于 Google Dapper的论文设计而来,由 Twitter 公司开发贡献。其主要功能是聚集来自各个异构系...

qq924862077
2018/05/12
0
0
ZipKin原理学习(分布式实时数据追踪系统)+window部署zipkin+k8s部署zipkin

版权声明:本文为博主原创文章,转载请注明来源。开发合作联系luanpenguestc@sina.com https://blog.csdn.net/luanpeng825485697/article/details/85772954 ZipKin入门介绍 Zipkin是一款开源...

数据架构师
01/08
0
0
企业内部健康实时监控系统--MyEye

MyEye 是一款业务监控系统,用于企业内部健康实时监控。 MyEye 可以监控 http、rpc、redis、sql、mq 等所有有代码地方的(成功率、平均耗时、最大耗时、最小耗时、是否超过最大次数限制、是否...

强子哥哥
2017/01/16
16.3K
8

没有更多内容

加载失败,请刷新页面

加载更多

003-ES集群

ES 集群 详情: https://my.oschina.net/u/3635512/blog/3140294 将实验机器/etc/elasticsearch/elasticsearch.yml 中配置文件改为 cluster.name: myes   #ES集群名称node.name:......

伟大源于勇敢的开始
21分钟前
6
0
法国电力项目二期正式验收

2019年12月10日, 法国电力项目二期正式验收 并就未来的合作技术方向进行了探讨: 去中心化数据存储/搜索引擎 可信计算/零知识证明 能源虚拟机改造 出席的人有: 法国电力总部 CIO&CTO Step...

怎当她临去时秋波那一转
37分钟前
3
0
谷歌助手

参照: https://www.mxblog.com.cn/mac%E7%89%88chrome%E6%B5%8F%E8%A7%88%E5%99%A8%E5%AE%89%E8%A3%85%E8%B0%B7%E6%AD%8C%E8%AE%BF%E9%97%AE%E5%8A%A9%E6%89%8B.html......

T型人才追梦者
45分钟前
6
0
索引延迟关联

前言 今天在看代码的时候学习到了一种索引的优化,就先在此记录下来。 具体 举个例子,原sql如下: SELECT * FROM TABLE WHERE INDEX = '' LIMIT 10000, 10; 现象 就算INDEX用了查询索引,...

无敌小杰杰
今天
6
0
tomcat_jdk安装,安装zrlog,nginx代理tomcat,第二个java应用

tomcat_jdk安装 要跑tomcat 首先要安装 jdk jdk 有两个版本 一个是 open jdk,一个是 oracle jdk open jdk 是 oracle jdk 的开源版本 两个版本都可以使用 这次实验先使用 open jdk 来做 如果...

doomcat
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部