今天在部署一個(gè)新的開(kāi)發(fā)環(huán)境, 然后啟動(dòng)tomcat的時(shí)候, 發(fā)現(xiàn)居然啟動(dòng)卡住了, tomcat啟動(dòng)以后卡在INFO: Deploying web application directory ......反反復(fù)復(fù)嘗試, 未果, 于是上google爬了下文, 發(fā)現(xiàn)是jdk的一個(gè)bug導(dǎo)致的;附下官網(wǎng)的解釋
原因在于centos7的隨機(jī)數(shù)獲取機(jī)制問(wèn)題, 和jdk7的不兼容, 重啟服務(wù)器的第一次啟動(dòng)可以, 再啟動(dòng)tomcat就會(huì)卡住了;
若要嘗試下哪種系統(tǒng)會(huì)卡住, 可以通過(guò)下面的命令在linux系統(tǒng)下測(cè)試是否會(huì)卡這個(gè)bug;
head -n 1 /devrandom
會(huì)發(fā)現(xiàn)第一次很快返回一個(gè)隨機(jī)數(shù), 第二次就一直卡住了;
解決方案
更改~/jre/lib/security/java.security里面的
securerandom.source=file:/dev/urandom
改為
securerandom.source=file:/dev/./urandom
這里很奇怪的是官網(wǎng)的文檔是叫人改為/dev/urandom,就是調(diào)用urandom, 不要調(diào)用random;而實(shí)際上中間還要加個(gè)/./才可以成功啟動(dòng)tomcat
這是為什么呢? 最后被我找到了一遍詳細(xì)的文章; 好奇的可以再繼續(xù)探究探究;