今天在部署一个新的开发环境, 然后启动tomcat的时候, 发现居然启动卡住了, tomcat启动以后卡在INFO: Deploying web application directory ......反反复复尝试, 未果, 于是上google爬了下文, 发现是jdk的一个bug导致的;附下官网的解释
原因在于centos7的随机数获取机制问题, 和jdk7的不兼容, 重启服务器的第一次启动可以, 再启动tomcat就会卡住了;
若要尝试下哪种系统会卡住, 可以通过下面的命令在linux系统下测试是否会卡这个bug;
head -n 1 /devrandom
会发现第一次很快返回一个随机数, 第二次就一直卡住了;
解决方案
更改~/jre/lib/security/java.security里面的
securerandom.source=file:/dev/urandom
改为
securerandom.source=file:/dev/./urandom
这里很奇怪的是官网的文档是叫人改为/dev/urandom,就是调用urandom, 不要调用random;而实际上中间还要加个/./才可以成功启动tomcat
这是为什么呢? 最后被我找到了一遍详细的文章; 好奇的可以再继续探究探究;