metrics

介绍

FlexyPool严重依赖Dropwizard (以前称为Codahale)度量标准来监视连接池的使用情况 。 集成到Dropwizard中后,程序包名称必然会被重命名 。

因此,4.0.0版本将使用io.dropwizard.metrics软件包名称代替com.codahale.metrics

挑战

除了明显的向后不兼容之外,此更改最具有挑战性的方面是Maven依赖项只会看到版本递增。 这意味着您将无法在同一个Maven模块中包含两个版本,因为groupIdartifactId在3.xx和4.xx版本之间不会更改。

<dependency><groupId>io.dropwizard.metrics</groupId><artifactId>metrics-core</artifactId><version>${codahale.metrics.version}</version>
</dependency><dependency><groupId>io.dropwizard.metrics</groupId><artifactId>metrics-core</artifactId><version>${dropwizard.metrics.version}</version>
</dependency>

在最终用户应用程序中,此更改是可管理的,因为您只需要从一个版本迁移到另一个版本即可。 由于需要支持同一库的两个不兼容版本,因此基于Dropwizard Metrics构建的开源框架很难重构。 毕竟,您不想强迫您的客户端迁移到某个Metrics依赖项。

幸运的是,FlexyPool从一开始就拥有自己的Metrics抽象层。 将框架与外部依赖项隔离是一种安全措施,可让您轻松交换依赖项。

为了同时支持Codahale和Dropwizard软件包名称,FlexyPool指标的构建如下:

由于这些类不能驻留在一个jar中,因此有三个模块承载此层次结构:

  • flexy-pool-core:定义FlexyPool指标抽象
  • flexy-codahale-metrics:在Codahale矩阵之上实现FlexyPool指标抽象
  • flexy-dropwizard-metrics:在Dropwizard矩阵之上实现FlexyPool指标抽象

每个MetricsFactory均已注册为服务提供商 :

public class CodahaleMetricsFactoryService implements MetricsFactoryService {public static final String METRICS_CLASS_NAME = "com.codahale.metrics.Metric";@Overridepublic MetricsFactory load() {return ClassLoaderUtils.findClass(METRICS_CLASS_NAME) ? CodahaleMetrics.FACTORY : null;}
}public class DropwizardMetricsFactoryService implements MetricsFactoryService {public static final String METRICS_CLASS_NAME = "io.dropwizard.metrics.Metric";@Overridepublic MetricsFactory load() {return ClassLoaderUtils.findClass(METRICS_CLASS_NAME) ? DropwizardMetrics.FACTORY : null;}
}

并在运行时解析服务:

private ServiceLoader<MetricsFactoryService> serviceLoader = ServiceLoader.load(MetricsFactoryService.class);public MetricsFactory resolve() {for(MetricsFactoryService service : serviceLoader) {MetricsFactory metricsFactory = service.load();if(metricsFactory != null) {return metricsFactory;}}throw new IllegalStateException("No MetricsFactory could be loaded!");
}

结论

通过这种方式,FlexyPool可以同时使用Metrics实现,并且根据当前可用的库动态地做出决定。 Dropwizard指标4.0.0尚未发布,但FlexyPool已为即将进行的更改做好了准备。

翻译自: https://www.javacodegeeks.com/2015/07/how-does-flexypool-support-the-dropwizard-metrics-package-renaming.html

metrics

metrics_FlexyPool如何支持Dropwizard Metrics包重命名相关推荐

  1. FlexyPool如何支持Dropwizard Metrics包重命名

    介绍 FlexyPool严重依赖Dropwizard (以前是Codahale)度量标准来监视连接池的使用情况 . 集成到Dropwizard中后,程序包名称必然会被重命名 . 因此,4.0.0版本将 ...

  2. Java集成Sap/Erp产生的sapjco包重命名/rename问题及解决方案

    背景 公司要从erp拿数, 所以集成一下sapjco3进行连接. 初次集成在本地是没有问题的, 但是打包之后运行会出现 Caused by: java.lang.ExceptionInInitiali ...

  3. idea怎么给包重命名_IntelliJ IDEA 修改包名

    1.首先将AndroidManifest的Package Name重命名(快捷键shift+F6或者右键Refctor然后Rename)这时Package Name就改变了,但是Src的文件名还没变 ...

  4. java的包资源管理器怎么弄出来_eclipse包资源管理器java项目,包,类重命名 来学习吧...

    eclipse包资源管理器java项目,包,类重命名,对于修改已知创建的包(包括java项目,java包)和java类文件的命名非常重要的,有时候你的java包里有多个java文件,你要改名字,可以说 ...

  5. 【笔记】python os的使用 文件批量重命名 批量移动文件 将png转jpg代码

    对于os的使用总是容易混淆,这里记录一下. print(os.listdir(os.path.join("C:/Users/pic"))) tagg = pandas.read_c ...

  6. 文件重命名不了怎么办,教你解决办法

    我们平常在给文件重命名时需要右击选中文件并选择重命名键,再输入文件名重命名,但是遇到上百上千数量较多文件需要修改文件名的时候,用这种方法进行重命名操作费时费力,所有今天教大家一个批量重命名的方法,来解 ...

  7. 想快速给文件夹重命名就这样做

    很多小伙伴们都有为桌面上一大堆未命名的文件感到头疼的情况,桌面乱糟糟的,工作起来也会很烦躁,那今天小编就来给大家分享一个可以快速给文件夹重命名的简单操作. 首先打开浏览器搜索"固乔科技&qu ...

  8. linux下rename命令用法详解(重命名文件)

    本文介绍了linux系统中rename命令的用法,用来修改文件名.重命名文件,批量重命名文件rename是最好的选择,需要的朋友参考下. 在linux系统中重命名文件,经常用到mv命令,批量重命名文件 ...

  9. apkrenamer_实用软件ApkRenamer:一键重命名apk包

    和iOS不同,安卓系统默认支持第三方软件包安装,用户能够从多种渠道获取安卓软件apk包来扩展手机功能.虽说没有了指定市场这一限制,但自由也带来了混乱,网络上流传的apk安装包命名杂乱不已,很多朋友长期 ...

最新文章

  1. 邮箱自动转发攻击邮件服务器
  2. mysql和mybatis优化_MySQL + mybatis的SQL优化方案
  3. Android Realm相关操作
  4. 后端技术:SpringBoot配置热加载工具(devtools)笔记
  5. 携程编程大赛 (预赛第二场)第一题【剪刀石头布】
  6. 函数表达书-读书笔记
  7. HEVC/H265 namespace 介绍
  8. bootstrapt学习指南_TensorFlow 2.0深度强化学习指南
  9. iOS播放器 - AVPlayer
  10. PHP-Header缓存策略
  11. Spring Cloud之Feign客户端调用工具
  12. Laravel 框架发送邮件
  13. 微信小程序官方开发文档——框架
  14. 360来硬拼,云盘免费用了!新注册就能获得36T容量!
  15. 网络空间安全--密码学重点(适合提前自学的宝宝)
  16. 解决There is no getter for property named ‘organization_id‘ in的报错
  17. 虾米音乐的一个小功能
  18. Chrome浏览器谷歌翻译 失效/用不了的解决方法idea-翻译插件失败(TKK: 更新 TKK 失败,请检查网络连接)
  19. Urban NeRF
  20. SpringCloud相关jar maven管理工具不能下载(Finchley.M8)

热门文章

  1. P7888-「MCOI-06」Distinct Subsequences【dp】
  2. CF1322B-Present【双指针】
  3. P4199-万径人踪灭【FFT】
  4. CF7D-Palindrome Degree【字符串hash,dp】
  5. nssl1322,jzoj(初中)2109-清兵线【dp】
  6. USACO2.4のP1519-穿越栅栏(Overfencing)【bfs】
  7. OJ4121 and OJ2968-股票买卖 and Maximun sum【各种dp之6 and 9】
  8. 2021 CCPC E. 被遗忘的计划(循环卷积+快速幂)
  9. MyEclipse生成Javadoc帮助文档
  10. JAVA解析html文档,替换img图片路径成base64编码,并将文章存入数据库