Je suis en train de développer une application web Tomcat et j'ai besoin de pouvoir redémarrer Tomcat pour charger les changements de code. Cependant, parfois Tomcat prend beaucoup de temps au démarrage comme le thread principal est bloqué à l'endroit suivant:Comment accélérer Tomcat SSL init
java.lang.Thread.State: RUNNABLE
at org.apache.tomcat.jni.SSL.initialize(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.core.AprLifecycleListener.initializeSSL(AprLifecycleListener.java:214)
- locked <119e583> (a java.lang.Class)
at org.apache.catalina.core.AprLifecycleListener.lifecycleEvent(AprLifecycleListener.java:83)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:770)
at org.apache.catalina.startup.Catalina.load(Catalina.java:530)
at org.apache.catalina.startup.Catalina.load(Catalina.java:550)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:260)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:412)
Ce décrochage est causée par l'entropie disponible (comme indiqué en exécutant cat/proc/sys/kernel/random/entropy_avail) est trop bas.
Quand je suis du développement de code, je ne se soucient pas si le moteur SSL est initialisée avec un bon nombre aléatoire.
Est-il possible pour moi de vider une entropie faux dans/dev/rnd ou Tomcat forcer à utiliser une entropie faux?
Je peux pousser l'entropie plus rapidement en exécutant « trouver/» mais cela prend un certain temps pour produire l'entropie suffisante.
Eh bien, c'était OpenSSL alors - http://www.openssl.org/support/faq.cgi#USER1. J'ai bien peur de ne pas avoir vu l'appel JNI dans la stacktrace qui contenait aussi des références à AprLifecycleListener. Mais cela explique pourquoi la configuration de java.security.egd n'a pas fonctionné. Tomcat utilisait APR qui utilise OpenSSL et non JSSE. –