2016-03-02 3 views
0

Если 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) 
+0

Файлы файлов tomcat будут указывать на предыдущую версию любых файлов java, которые она использовала. если сам tomcat не проверяет, был ли изменен соответствующий файл за его спиной подобным образом, он будет продолжать использовать эти «устаревшие» указатели файлов до тех пор, пока он не будет перезапущен. –

ответ

1

В общем, ваши процессы JVM не должны быть перезапущен после обновления виртуальной машины Java. Тем не менее, у меня был хотя бы один случай, когда производственный сервер, чья JVM был обновлен, начал действовать забавно в течение примерно 24 часов. Он внезапно не смог найти определенные ресурсы на диске.

Чтобы быть в безопасности, я бы постарался отскочить ваши экземпляры Tomcat, если вы собираетесь обновить JVM.

Что касается символической ссылки, это не должно быть проблемой вообще. Если у вас есть две (или более) JVM, установленные бок о бок, то установка новой версии и изменение символической ссылки не должны влиять на работающий сервер. В моем случае я обновил JVM через пакетный менеджер ОС, который фактически заменил старый на новый.

Смежные вопросы