1. 程式人生 > >Linux 兩個tomcat指定兩個不同jdk版本啟動,不用全域性環境變數

Linux 兩個tomcat指定兩個不同jdk版本啟動,不用全域性環境變數

Linux tomcat指定jdk版本啟動,不用全域性環境變數

1.為什麼要寫這樣的一篇部落格?

  1. 本人是一名實習生,在公司要上線一個專案的時候,發現一個很奇葩的問題,就是一個伺服器上要有兩個不同版本tomcat和兩個不同版本JDK,既是,執行的主程式用的是tomcat 6.0和JDK1.5,報表服務用的是tomcat 9.0 和 JDK1.8,所以在一個伺服器要有兩個tomcat和兩個JDK問題就此出現。
  2. 兩個tomcat會發生埠衝突的問題,這裡不詳解,一般是次要的服務修改tomcat裡的conf檔案裡的server.xml,所有預設埠,全部+1,如:8080改為8081;
  3. 解決問題一般為一個tomcat使用JDK的全域性變數,一個修改配置檔案,為指定JDK

2.配置tomcat使用指定JDK不用全域性環境變數 ,主要是修改setclasspath.sh和catalina.sh

  1. 進入tomcat的bin檔案裡,使用vim catalina.sh
  2. 最好是export裡面全部都有變數,很多部落格裡都只是寫JAVA_HOME和JRE_HOME兩個,記得改成自己JDK地址。
export JAVA_HOME=/opt/jdk1.8/jdk1.8.0_191
export JRE_HOME=/opt/jdk1.8/jdk1.8.0_191/jre
export CATALINA_HOME=/opt/tomcat-9.0
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

catalina.sh
3. 使用vim setclasspath.sh
4. 加入下面兩行配置,並修改如圖紅色框的東西。

export JAVA_HOME=/opt/jdk1.8/jdk1.8.0_191
export JRE_HOME=/opt/jdk1.8/jdk1.8.0_191/jre


5. 如圖兩個tomcat對應不同版本jdk同時啟動成功,注意:修改登入讀取一次的配置檔案,需要重啟,不斷讀取的,則不需重啟。
啟動成功

3.思考,關閉防火牆是不是就是解決這種問題最好的方法?

  1. 經過一個晚上的思考,其實關閉或者禁用防火牆都不是一個好方法來的,因為防火牆始終在生成環境或測試環境中,始終都是要開啟的。
  2. 既然8080可以穿透防火牆,那肯定可以設定另一個埠來穿透防火牆
  3. 後續會補充防火牆,開啟埠的方法
  4. 補充開啟埠的方法,點選,前往:linux開啟埠方法