2016-03-02 87 views
0

如果Tomcat开始的JAVA_HOME:是否需要在更新JDK后重新启动Tomcat?

/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: 在JVM更新为Tomcat运行到java-1.7.0-oracle-1.7.0.99.x86_64后,我们刚刚在我们的Jenkins服务器上看到了这一点。堆栈跟踪以:

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后,不应该重新启动JVM进程。不过,我至少有一个案例,JVM升级后的生产服务器在大约24小时内开始变得有趣。它突然找不到磁盘上的某些资源。

为了安全起见,如果您要升级JVM,我会安排反弹您的Tomcat实例。

至于符号链接,这应该不是问题。如果您并排安装了两个(或更多)JVM,则安装新版本并更改符号链接不应对正在运行的服务器产生任何影响。就我而言,我已经通过操作系统的软件包管理器升级了JVM,它实际上用新软件替换了旧软件。

相关问题