![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 73
java源码
码农张思壮
这个作者很懒,什么都没留下…
展开
-
Shutdown Hook 中的日志去哪了?log4j2 shutdown hook 机制探究
日志去哪了把一个服务去掉 SpringBoot 依赖的时候,发现 shutdown hook 运行不正常了,有开始执行的日志,执行完成的却没有。重现也很方便,新建一个 maven 工程,增加一个启动类,如下@Slf4jpublic class Application { public static void main(String[] args) { log.info("start application..."); Runtime.getRuntime()原创 2021-04-04 20:02:00 · 1118 阅读 · 0 评论 -
使用 Maven Embedder 通过代码执行 maven 命令
如果有个需求是要通过代码调用 maven 命令,来上传 jar 包或进行其他操作,该如何实现?调用命令行当然可以,maven 官方也有一个项目 Apache Maven Invoker 实现类似需求,但前提是服务运行的机器或者容器中需要有 maven。大家可能都听说过 Write once, run anywhere. 如果没了 maven 环境就执行不了了,有没有更好的方式呢Maven Embedder 也是 maven 官方的一个项目,如名字一样,是可嵌入的,也就是不需要依赖外部 maven。项目原创 2020-11-07 18:12:32 · 904 阅读 · 3 评论 -
API 测试利器 WireMock
之前写了一篇介绍 HttpClient 的两种重试机制 的文章, 但是否真的会按照预期进行重试我们不得而知。别人提供给我们的 API 往往都是正常的,很多错误并不能稳定重现,这也造成了我们无法进行全面的测试。正是这种情况下,了解到了 WireMock。本文不打算做一个入门教程,重点在于如何用 WireMock 解决实际的问题。WireMock 官网的文档很不错,想要深入了解的可以去阅读一下。初始化调用端首先初始化一个HttpClientpublic ZwroksApi(){ Request原创 2020-11-05 21:23:37 · 324 阅读 · 0 评论 -
HttpClient的两种重试机制
本文基于HttpClient 4.5.13使用 http 请求外部服务时,由于网络或者服务本身的不稳定性,经常需要重试。重试当然可以通过手撸代码实现,但更好的方式是通过现有的机制去实现。HttpClient 中支持两种重试:异常重试。服务不可用重试。异常重试HttpClient 执行时会抛出两种异常:java.io.IOExceptionClientProtocolExceptionjava.io.IOException 被认为是非致命性且可恢复的,而 ClientProtocolE原创 2020-11-03 22:00:26 · 2083 阅读 · 0 评论 -
JDBC驱动为什么没加载
使用Class.forName加载驱动使用JDBC连接数据库的时候,需要先加载驱动。可以通过Class.forName声明要加载的驱动,加载这个词在这里其实不太明确,因为Class.forName不只是把类加载到了内存中,还会初始化(static块中的代码会被执行)。注册驱动其实就发生在 static 块中。比如mysql的驱动com.mysql.cj.jdbc.Driverstatic {...原创 2019-12-14 17:30:30 · 1494 阅读 · 0 评论