在进行JAVA Web环境部署时,发现在启动Tomcat<TC>时,非常慢,启动后,进程中存在TC的进程,端口也处于监听状态,但是无法访问对应的服务,开始怀疑是项目问题,后来直接启动解压后的TC,也无法启动,后来查看日志,启动进程block到deploy第一个项目,如图,后台通过更换TC的版本等方法,都无法解决,后来在网上看到关于java.security.SecureRandom的说法
思路1:
加入setenv.sh后,启动正常。<JAVA_OPTS="$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom">
思路2:
直接修改JDK中对ramdom的引用:
$JAVA_HOME/jre/lib/security/java.security
->securerandom.source=file:/dev/./urandom
PS:由于对JAVA的了解还很浅,所有定位问题的过程稍长,在相关博客中,是通过Thread dump类似的工具,定位线程lock在java.security.SecureRandom的方法中,合理工具,定位相应的问题。