即使在java 8中,SecureRandom的创建也很慢

时间:2015-07-27 19:30:14

标签: java spring random java-8

我搜索了这个问题。我得到了印象,它在java 8中得到了解决。但突然之间,我开始在我的新VM中使用ubuntu 14.04来解决这个问题。

  

2015-07-27 14:56:35.324 INFO 11809 --- [localhost-startStop-1] oacutil.SessionIdGeneratorBase:使用[SHA1PRNG]创建会话ID生成的SecureRandom实例花了[167,833]毫秒。

java版本是

  

java -version   java版" 1.8.0_45"   Java(TM)SE运行时环境(版本1.8.0_45-b14)   Java HotSpot(TM)64位服务器VM(版本25.45-b02,混合模式)

服务器是ubuntu 14.04。

另一件事是,我将这个java进程作为spring boot应用程序运行,它已经嵌入了tomcat运行。

任何想法,可能出错? 我甚至尝试过,

  

-Djava.security.egd = file:/ dev /./ urandom 选项

2 个答案:

答案 0 :(得分:12)

运行

时尝试使用以下命令
  

java -Djava.security.egd = file:/ dev /./ urandom -jar demo.jar

答案 1 :(得分:0)

通过将下面的代码片段粘贴到pom.xml中,尝试用undertow替换嵌入式tomcat:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-undertow</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency>

它非常适合我。 SecureRandom问题是一个tomcat问题,可以完全用另一个servlet容器替换。