1. 程式人生 > >jdk 1.5 升級成1.6 引起的問題

jdk 1.5 升級成1.6 引起的問題

前幾天,同事的把生產環境的jdk升級成jdk1.6,因為某個工程的需要。1.6 向下相容1.5,我也就沒說什麼。

他為了方便,把生產環境的整臺機子環境變數直接改成jdk1.6.而不是他工程用的那個tomcat.升級後沒發現幾個tomcat報錯。以為就正常了。

第二天,剛好週六週日。支撐把電話過來說,前個tomcat會報錯,上去看一下報。java.lang.OutOfMemoryError: Java heap space 。當時沒想這些,叫他重啟一下,觀察兩天,這兩天,異常還是會報。

週一回來上班還是會報,就把那個tomcat的記憶體改大點。

JAVA_OPTS="-server -Xms800m -Xmx800m  -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "

也就解決問題了。

第二天,發現另一個tomcat也出現了問題。定時發彩信,原來執行好好的,現在發彩信會報錯。java.lang.RuntimeException: Unsupported attachment type "com.sun.xml.internal.messaging.saaj.soap.AttachmentPartImpl" only supporting "javax.activation.DataHandler".在測試環境試一下,沒問題啊,找一下看有沒有重複的包,也沒有。

想了想,生產環境跟測試環境就jdk不一樣。可以是因為上次同事升級生產環境的jdk引起的。

所以把那個tomcat的改回1.5.問題就解決了。

修改Tomcat的JDK目錄

開啟tomcat/bin/catalina.bat,找到如下語句:

rem $Id: catalina.bat 656834 2008-05-15 21:04:04Z markt $

rem ---------------------------------------------------------------------------

rem   JSSE_HOME       (Optional) May point at your Java Secure Sockets Extension

......

......
rem
rem $Id: catalina.bat 355227 2005-12-08 21:44:16Z keith $
rem ---------------------------------------------------------------------------

後面加一句

set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_10

注意:其中最後一條語句是JDK的路徑,該值根據你的JDK安裝情況而定。

聯想到上一件報記憶體不足的事,肯定也是因為jdk升級導致的問題。可以是jdk1.6所需要的記憶體多吧。

這次事件後,知道了凡事做事要慎重。