一、位置:pinpoint.config
# Needs to be a comma separated list of method,if web application then value need is empty
#监控用户自定义的指定方法或者指定类的所有方法或者指定包下所有类的方法或者指定包下递归包及类的所有方法
#创建默认动态转换注册器,这个是装载像spring这样,在通过运行时扫描配置文件来动态加载的类,全部放到这个动态注册器里
#(TODO这个后面可以考虑把用户自定义的类和方法也通过这种方式来实现)
#按照原来的方式对应用的启动性能会有所影响加上不支持jboss,因为jboss的class文件存储的协议使用普通的file访问不到
profiler.entrypoint=com.***.action,com.***.manager,com.***.dao
二、位置:pinpoint-bootstrap-core工程下DefaultProfilerConfig.java
this.userIncludeList = readList("profiler.entrypoint");
三、位置:pinpoint-user-plugin工程下UserPlugin.java
addUserIncludeClass(basePackage,config.getExcludeClassNameMap());
四、位置:pinpoint-user-plugin工程下UserPluginConfig.java
List<String> excludeList = src.readList("profiler.entrypoint.exclude.classname");
excludeClassNameMap = excludeClassNameListToMap(excludeList);
-------------------------------------------------------------------------------------------------
五、位置:pinpoint-user-plugin工程下UserPluginConfig.java
在UserPluginConfig中,把字符串的被检测包名和不检测报名放入HashMap。
不知为何,processPackClassMethod被屏蔽了。
六、位置:pinpoint-commons工程下ClassMethodUtil.java
processPackClassMethod方法,从被探测包中拿出所有的类。
---------------------------------------------------------------------------------------------------
七、位置:pinpoint-user-plugin工程下UserPlugin.java
在setupUserClass方法中加入语句:List<String> excludeKeysList = getMapKeysList(config.getExcludeClassNameMap());
用以在循环之前处理map的key到一个list中,便于判断各个类是否归属于该map。
八、位置:pinpoint-user-plugin工程下UserPlugin.java
在addUserIncludeClass中增加参数final List<String> excludeMapKeysList,用以传入不添加探针包名的集合。
同时调用下面的方法去判断
private boolean isExcludeClassName(List<String> excludeMapKeysList, String javaClassName){
String packagePath = javaClassName.substring(0, javaClassName.lastIndexOf('.'));
return excludeMapKeysList.contains(packagePath);
}
就完成了对包名的过滤。