今天在部署一個新的開發(fā)環(huán)境, 然后啟動tomcat的時候, 發(fā)現(xiàn)居然啟動卡住了, tomcat啟動以后卡在INFO: Deploying web application directory ......反反復復嘗試, 未果, 于是上google爬了下文, 發(fā)現(xiàn)是jdk的一個bug導致的;附下官網(wǎng)的解釋
原因在于centos7的隨機數(shù)獲取機制問題, 和jdk7的不兼容, 重啟服務器的第一次啟動可以, 再啟動tomcat就會卡住了;
若要嘗試下哪種系統(tǒng)會卡住, 可以通過下面的命令在linux系統(tǒng)下測試是否會卡這個bug;
head -n 1 /devrandom
會發(fā)現(xiàn)第一次很快返回一個隨機數(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;而實際上中間還要加個/./才可以成功啟動tomcat
這是為什么呢? 最后被我找到了一遍詳細的文章; 好奇的可以再繼續(xù)探究探究;