2016-03-02 86 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,它實際上用新軟件替換了舊軟件。

相關問題