Linux下建立多实例Tomcat(独立JVM)
說明:本文參照了以下文章:
http://apps.hi.baidu.com/share/detail/24999679
近期因為客戶較多,發現在同一臺服務器上由于Lerx V2版本不同,導致了Web應用出錯。分析原因,發現是由于所有WEB應用共享同一Tomcat進程,而用戶類(WEB-INF/classes)下的類文件同名但內容并不相同導致沖突。因此考慮在linux環境下采用獨立jvm來處理解決這個問題。
參考上述文章設置,由于文中一些細節沒有交待或有錯誤,因此補充如下。
該文章前部分是apache整合問題,這些內容網上很多,可以參考。lerx網站上也有一些介紹。
從實踐中看清tomcat的啟動過程與原理就可以輕松完成這一多實例方案。
CATALINA_BASE是一個非常重要的變量,可以認為是應用程序主目錄。當tomcat啟動時,會從這一目錄下尋找它所需要的資源。所以在該目錄下,應該有下面一些文件夾:conf、temp、work、logs。對于我來說,一般用戶的文件我都會放在同一個目錄內,所以,我在目錄下還建了bin、public_html文件夾。以下是各文件的簡要說明
conf -------- tomcat配置文件目錄
temp -------- 臨時文件目錄
work -------- tomcat工作目錄
logs -------- 日志文件目錄
bin ------- 執行文件目錄
public_html -------- 網站文件目錄
根據上述目錄結構,可以修改/etc/skel模板文件夾。在這個文件夾下按照上述進行建立文件夾。當建立一個新用戶時,會根據這個目錄模板產生相應的用戶文件夾。
筆者在按參考文章時最后發現無法實現,關鍵是文中有兩個地方沒有交待清楚。一是上述文件夾問題,二是應該將Tomcat的conf下的其它文件也要復制到用戶目錄的conf目錄下。
每個server.xml中注意要修改端口號不要相同。比如:第一個應用server.xml中的http采用8081端口,第二個應用server.xml中采用8082端口。
.sh文件可以放在bin目錄中。
因此可以export CATALINA_BASE="$PWD/../"來指定。一個更好的方法是將tomcat.sh放在用戶目錄下,tomcat.sh腳本內容可以如下:
#!/bin/bash
# description:? Start up the Tomcat servlet engine.
# Sourc function library.
. /etc/init.d/functions
RETVAL=$?
export CATALINA_BASE="$PWD"
export CATALINA_HOME="/usr/local/tomcat"
export JVM_OPTIONS="-Xms32m –Xmx64m"
case "$1" in
start)
??????? if [ -f $CATALINA_HOME/bin/startup.sh ];
????????? then
??????????? echo $"Start Tomcat"
??????????? $CATALINA_HOME/bin/startup.sh
??????? fi
??????? ;;
stop)
??????? if [ -f $CATALINA_HOME/bin/shutdown.sh ];
????????? then
??????????? echo $"Stop Tomcat"
??????????? $CATALINA_HOME/bin/shutdown.sh
??????? fi
??????? ;;
*)
??????? echo $"Usage: $0 {start|stop}"
??????? exit 1
??????? ;;
esac
exit $RETVAL
目錄及文件結構如下:
總結
以上是生活随笔為你收集整理的Linux下建立多实例Tomcat(独立JVM)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MATLAB中求矩阵的逆矩阵方法(2种)
- 下一篇: maven常用的命令(window控制台