Если Tomcat запускается с JAVA_HOME из:Нужна ли перезагрузка Tomcat после обновления JDK?
/usr/lib/jvm/jre
который сам по себе является символической ссылкой на что-то вроде:
/usr/lib/jvm/java-1.7.0-1.7.0.80.x86_64/jre
, а затем Java обновляется в то время как Tomcat работает на:
/usr/lib/jvm/java-1.7.0-1.7.0.95.x86_64/jre
с предыдущей символической ссылкой, указывающей теперь на новое местоположение Java в файловой системе, нужно ли перезагрузить Tomcat после обновления?
Я считаю, что я видел проблемы без перезагрузки, связанные с загрузкой классов, но я ищу ссылки на лучшие практики, инструкции или рекомендации либо за или против необходимости перезапуска. Мой google-fu не позволяет мне найти окончательный ответ на этот вопрос.
Добавлено 3/30/2106: Мы только что увидели это на нашем сервере Jenkins после того, как JVM был обновлен при запуске Tomcat до java-1.7.0-oracle-1.7.0.99.x86_64. Трассировка стека закончилась:
Caused by: java.io.FileNotFoundException: /usr/lib/jvm/java-1.7.0-oracle-1.7.0.95.x86_64/jre/lib/ext/dnsns.jar
at sun.misc.URLClassPath$JarLoader.getJarFile(URLClassPath.java:726)
at sun.misc.URLClassPath$JarLoader.access$600(URLClassPath.java:591)
at sun.misc.URLClassPath$JarLoader$1.run(URLClassPath.java:673)
at sun.misc.URLClassPath$JarLoader$1.run(URLClassPath.java:666)
at java.security.AccessController.doPrivileged(Native Method)
at sun.misc.URLClassPath$JarLoader.ensureOpen(URLClassPath.java:665)
at sun.misc.URLClassPath$JarLoader.getResource(URLClassPath.java:836)
Файлы файлов tomcat будут указывать на предыдущую версию любых файлов java, которые она использовала. если сам tomcat не проверяет, был ли изменен соответствующий файл за его спиной подобным образом, он будет продолжать использовать эти «устаревшие» указатели файлов до тех пор, пока он не будет перезапущен. –