disconf 主要分为三个项目:
1-disconf.core 主要是提供助手类http的resful 重试等等,zk wather封装,加强了重试机制,做的东西很薄。
2-disconf.client 强依赖 spring,提供了 扫包,自定义annotation的解析装配,切面逻辑处理aspectj,获取远端配置,并落地 做的东西比较多 依赖也很多。
3-disconf.web 是后台管理的web应用,spring mvc restful api实现,前后端分离的开发模式,提供登录,后台管理的功能,业务的东西多一点,可能因为开源的原因,好多有些小功能上的bug,并没有提供权限管理的功能。
问题:private Map<String, DisconfCenterFile> confFileMap = new HashMap<String, DisconfCenterFile>();
内部实现是一个hashMap
"main" prio=5 tid=0x00007fa423805800 nid=0x1703 runnable [0x0000700000219000]
java.lang.Thread.State: RUNNABLE
at java.util.HashMap.addEntry(HashMap.java:884)
at java.util.HashMap.put(HashMap.java:505)
at com.baidu.disconf.client.common.model.DisconfCenterFile.getKV(DisconfCenterFile.java:134)
at com.baidu.disconf.client.usertools.impl.DisconfDataGetterDefaultImpl.getByFile(DisconfDataGetterDefaultImpl.java:28)
at com.baidu.disconf.client.usertools.DisconfDataGetter.getByFile(DisconfDataGetter.java:22)
at com.example.disconf.demo.task.DisconfDemoTask$1.run(DisconfDemoTask.java:80)
at java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy.rejectedExecution(ThreadPoolExecutor.java:2025)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:821)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1372)
at com.example.disconf.demo.task.DisconfDemoTask.run(DisconfDemoTask.java:77)
at com.example.disconf.demo.DisconfDemoMain.main(DisconfDemoMain.java:36)
aspctj
"main" prio=5 tid=0x00007fd6ac007000 nid=0x1703 runnable [0x0000700000219000]
java.lang.Thread.State: RUNNABLE
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:274)
at org.aspectj.weaver.reflect.Java15AnnotationFinder.getAnnotationFromMember(Java15AnnotationFinder.java:100)
at org.aspectj.weaver.reflect.ReflectionVar.getBindingAtJoinPoint(ReflectionVar.java:162)
at org.aspectj.weaver.reflect.ShadowMatchImpl.getPointcutParameters(ShadowMatchImpl.java:108)
at org.aspectj.weaver.reflect.ShadowMatchImpl.matchesJoinPoint(ShadowMatchImpl.java:88)
at org.springframework.aop.aspectj.AspectJExpressionPointcut.matches(AspectJExpressionPointcut.java:336)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:167)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:653)
at com.example.disconf.demo.config.CodeConfig$$EnhancerBySpringCGLIB$$2495de40.getCodeError(<generated>)
at com.example.disconf.demo.task.DisconfDemoTask.run(DisconfDemoTask.java:71)
at com.example.disconf.demo.DisconfDemoMain.main(DisconfDemoMain.java:36)
java.lang.Thread.State: RUNNABLE
at sun.reflect.Reflection.getCallerClass(Native Method)
at java.lang.Class.getDeclaredFields(Class.java:1810)
at com.baidu.disconf.client.store.aspect.DisconfAspectJ.decideAccess(DisconfAspectJ.java:60)
at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)
at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:68)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:653)
at com.example.disconf.demo.config.JedisConfig$$EnhancerBySpringCGLIB$$ce8fc02a.getPort(<generated>)
at com.example.disconf.demo.task.DisconfDemoTask.run(DisconfDemoTask.java:70)
at com.example.disconf.demo.DisconfDemoMain.main(DisconfDemoMain.java:36)
DISCCONF本身代码写的很糟糕,使用过程中经常的发生问题,不推荐使用。
分享到:
相关推荐
4500页的源码解读 光是SELECT语句相关实现,就阐述了300多页 看完了你就是postgreSQL达人了 章节明细,需要精读那个功能点就仔细看
Netty5.0架构剖析和源码解读 本文档主要讲述了Netty5.0架构剖析和源码解读,涵盖了Netty的架构、源码分析、NIO入门等方面的知识点。 概述 JAVA 的 IO 演进是一个长期的过程,从传统的 BIO 通信到 NIO 的出现,都...
源码解读是软件开发中的一项重要技能,它涉及到对程序源代码的深入理解和分析,以揭示系统的功能实现和设计思路。在《源码解读的基本原理》中,我们了解到源码解读能够帮助我们理解系统的运作机制,提升编程能力,并...
首先,源码解读对于任何开发者来说都是提升技术能力的重要途径。通过阅读源码,我们可以更直观地了解框架的工作原理,从而更好地利用它。Spring框架的设计理念和实现方式对许多其他Java框架产生了深远影响,因此深入...
floodlight源码解读
《Resin源码解读》 Resin,作为一个高性能的Java应用服务器,其源码解析对于我们深入理解Web服务器的运行机制和优化技术具有重要的价值。本文将从日志分析、运行时调试、网络模型以及线程池模型四个方面进行深入...
Netty5.0 架构剖析和源码解读 作者:李林锋 版权所有 email neu_lilinfeng@ © Netty5.0 架构剖析和源码解读1 1. 概述2 1.1. JAVA 的IO演进2 1.1.1. 传统BIO通信的弊端2 1.1.2. Linux 的网络IO模型简介4 1.1.3. IO...
Spark-2.3.1源码解读。 Spark Core源码阅读 Spark Context 阅读要点 Spark的缓存,变量,shuffle数据等清理及机制 Spark-submit关于参数及部署模式的部分解析 GroupByKey VS ReduceByKey OrderedRDDFunctions...
本文将针对"Vue进阶面试题,源码解读,含Vue3源码解读"这一主题,详细探讨相关知识点。 首先,对于Vue进阶面试题,通常会涉及到以下几个方面: 1. **响应式原理**:Vue基于ES6的Proxy和Reflect实现数据的响应式,...
在《PX4源码解读》中,我们可以深入探讨这个系统的核心组成部分和工作原理。首先,PX4的架构由几个关键模块组成: 1. **硬件抽象层**:这层代码确保了PX4可以适应各种硬件平台,包括不同类型的传感器、处理器和通信...
JEECMS2源码的解读,介绍JEECMS2源码的结构,开发流程等
综上所述,“Pixhawk源码总结.pdf”这份文档详细介绍了Pixhawk的软件架构、关键算法以及源码解读,对于想要深入学习开源飞控系统的人来说,是一份宝贵的参考资料。通过阅读和实践,开发者可以更好地掌握无人机飞行...
《Spark源码解读迷你书》是一本专注于深入理解Apache Spark核心源码的书籍,适合对大数据处理技术有深厚兴趣并且想要探索Spark内部机制的读者。在阅读这本书之前,建议先搭建好Spark开发环境,比如使用Intelij IDEA...
这篇博文“Struts2源码解读”深入剖析了Struts2的核心机制,帮助开发者更好地理解和利用这个框架。源码分析是提升编程技能和解决问题的关键,特别是对于复杂的框架如Struts2,理解其内部工作原理能够帮助我们优化...
php源码解读
【Lucene源码解读1】 Lucene是一款开源的全文搜索引擎库,由Apache软件基金会开发,广泛应用于各种信息检索系统。其强大的搜索功能和高效的性能深受开发者喜爱。在深入理解Lucene之前,我们需要先了解它的核心概念...
“快速”和“简单”并不用产生维护性或性能上的问题。Netty 是一个吸收了多种协议(包括FTP、SMTP、HTTP等各种二...最终,Netty 成功的找到了一种方式,在保证易于开发的同时还保证了其应用的性能,稳定性和伸缩性。
Java源码解读是Java开发人员深入理解平台工作原理和编程模型的重要途径。在这个"java-src:java源码解读"项目中,我们可以探索Java的核心库,包括JVM(Java虚拟机)、集合框架、并发机制、I/O流、网络编程等多个关键...