最近接触新的dubbo项目,项目初始时,测试环境的提供者服务发布较频繁,奈何公司又没有自动发布工具,遂自己在测试环境中搭建了Jenkins用于dubbo服务的发布。由于第一次使用,过程中也遇到了一些问题,记录与此
Q1、DubboShutdownHook
问题描述
打包/停止原进程/拷贝/解压 过程一切正常。在执行启动脚本正常执行,可惜服务就是未正常启动,手动启动正常。翻查启动日志发现一段警告信息:
DubboShutdownHook WARN Unable to register Log4j shutdown hook because JVM is shutting down. Using SimpleLogger
解决
初步判断是与Log4j相关,最终发现与项目中log4j2.xml相关。可移步:http://javahonk.com/unable-to-register-shutdown-hook-because-jvm-is-shutting-down/
可以log4j2.xml中添加shutdownHook=”disable”
完整内容如下
- <?xml version="1.0" encoding="UTF-8"?>
- <Configuration status="INFO" shutdownHook="disable">
- ...
- </Configuration>
bingo smile
Q2、Jenkins构建完成后杀死衍生进程
问题描述
在解决完上一个问题后,没有出现那一段警告信息了,本以为可以偷懒了,谁知道dubbo服务依旧还是没有启动,这时候翻查日志,对比手动启动的日志无任何不同,陷入沉思。依旧是,正常执行脚本,日志也说明已经启动,可就是没有该进程,难道是被什么给杀掉了?
于是带着这个思路去搜索,Jenkins杀死进程
发现了一条关键信息:https://blog.csdn.net/u011138533/article/details/53941123
Jenkins默认会在Build结束后Kill掉所有的衍生进程
原来如此!!
解决
在execute shell输入框中加入BUILD_ID=DONTKILLME
完整如下: