如果Tomcat以JAVA_HOME:
启动/usr/lib/jvm/jre
这本身就是一个符号链接:
/usr/lib/jvm/java-1.7.0-1.7.0.80.x86_64/jre
然后在Tomcat运行时更新Java:
/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 :(得分:2)
通常,升级JVM后不必重新启动JVM进程。但是,我至少有一个案例,其中JVM升级的生产服务器在大约24小时内开始表现得很有趣。它突然在磁盘上找不到某些资源。
为了安全起见,如果您要升级JVM,我会安排退回您的Tomcat实例。
至于符号链接,根本不应该是一个问题。如果您并排安装了两个(或更多)JVM,则安装新版本和更改符号链接不应对正在运行的服务器产生任何影响。在我的例子中,我通过操作系统的包管理器升级了JVM,实际上用新的包管理器取代了旧的。