Tomcat啟動分析(我們?yōu)槭裁匆渲肅ATALINA_HOME環(huán)境變量)
用文本編輯工具打開用于啟動Tomcat的批處理文件startup.bat,仔細(xì)閱讀。在這個文件中,首先判斷CATALINA_HOME環(huán)境變量是否為空,如果為空,就將當(dāng)前目錄設(shè)為CATALINA_HOME的值。接著判斷當(dāng)前目錄下是否存在bin\catalina.bat,如果文件不存在,將當(dāng)前目錄的父目錄設(shè)為CATALINA_HOME的值。根據(jù)筆者機(jī)器上Tomcat安裝目錄的層次結(jié)構(gòu),最后CATALINA_HOME的值被設(shè)為Tomcat的安裝目錄。如果環(huán)境變量CATALINA_HOME已經(jīng)存在,則通過這個環(huán)境變量調(diào)用bin目錄下的“catalina.bat start”命令。通過這段分析,我們了解到兩個信息,一是Tomcat啟動時,需要查找CATALINA_HOME這個環(huán)境變量,如果在Tomcat的bin目錄下調(diào)用startup.bat,Tomcat會自動并正確設(shè)置CATALINA_HOME;二是執(zhí)行startup.bat命令,實際上執(zhí)行的是“catalina.bat start”命令。
如果我們不是在Tomcat的bin目錄作為當(dāng)前目錄時調(diào)用startup.bat,就會出現(xiàn)如下圖所示的錯誤信息(在bin目錄的父目錄下調(diào)用除外)。
圖 在其他目錄下啟動Tomcat出錯
如果要想在任意目錄下都能啟動Tomcat,就需要設(shè)置CATALINA_HOME環(huán)境變量,你可以將CATALINA_HOME添加到Windows XP系統(tǒng)的環(huán)境變量中,其值就是Tomcat的安裝目錄。在筆者的機(jī)器上,Tomcat的安裝目錄是D:\apache-tomcat-6.0.36-windows-x86\apache-tomcat-6.0.36。添加CATALINA_HOME環(huán)境變量的過程和前述添加JAVA_HOME環(huán)境變量的過程是一樣的。如果你不想在系統(tǒng)的環(huán)境變量中添加,也可以直接在startup.bat文件中進(jìn)行設(shè)置。下面是在startup.bat文件中設(shè)置CATALINA_HOME后的文件片段:
rem $Id: startup.bat 908749 2010-02-10 23:26:42Z markt $
rem ---------------------------------------------------------------------------
set CATALINA_HOME=D:\apache-tomcat-6.0.36-windows-x86\apache-tomcat-6.0.36
rem Guess CATALINA_HOME if not defined
set "CURRENT_DIR=%cd%"
if not "%CATALINA_HOME%" == "" goto gotHome
set "CATALINA_HOME=%CURRENT_DIR%"
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
cd ..
...
注意以粗體顯示的這句代碼的作用就是設(shè)置CATALINA_HOME環(huán)境變量,在它的下面是判斷CATALINA_HOME是否為空的語句。如果找不準(zhǔn)位置,干脆將設(shè)置CATALINA_HOME環(huán)境變量的這句代碼放到文件的第一行。JAVA_HOME環(huán)境變量也可以采用同樣的方式進(jìn)行設(shè)置。不過,如果要在其他目錄下利用shutdown.bat來關(guān)閉Tomcat服務(wù)器,則需要在shutdown.bat文件中設(shè)置CATALINA_HOME和JAVA_HOME這兩個環(huán)境變量,設(shè)置變量的位置和startup.bat文件一樣,都是在判斷CATALINA_HOME是否為空之前。當(dāng)然,為了一勞永逸,避免重裝Tomcat后還要進(jìn)行設(shè)置(需要是同一版本的Tomcat安裝在同一位置),我們最好還是將CATALINA_HOME和JAVA_HOME這兩個環(huán)境變量添加到Windows XP系統(tǒng)的環(huán)境變量中。
有的讀者可能會對Tomcat安裝目錄的環(huán)境變量的名字是CATALINA_HOME而感到奇怪,按照其他環(huán)境變量的設(shè)置來看,JAVA_HOME表示JDK的安裝目錄,那么應(yīng)該用TOMCAT_HOME來表示Tomcat的安裝目錄,可為什么要使用CATALINA_HOME呢?實際上,在Tomcat 4以前,用的就是TOMCAT_HOME來表示Tomcat的安裝目錄,在Tomcat 4以后,采用了新的Servlet容器Catalina,所以環(huán)境變量的名字也改為了CATALINA_HOME。
在Windows系統(tǒng)下環(huán)境變量的名字是與大小寫無關(guān)的,也就是說,JAVA_HOME和java_home是一樣的。
了解了startup.bat文件以后,我們再來看看真正負(fù)責(zé)啟動Tomcat服務(wù)器的catalina.bat文件。通過分析catalina.bat文件,我們發(fā)現(xiàn)它還調(diào)用了一個文件setclasspath.bat。在setclasspath.bat文件中,它檢查JAVA_HOME環(huán)境變量是否存在,并通過JAVA_HOME環(huán)境變量,找到j(luò)ava.exe,用于啟動Tomcat。在這個文件中,還設(shè)置了其他的一些變量,代表調(diào)用Java的標(biāo)準(zhǔn)命令,有興趣的讀者可以自行分析一下這個文件。在執(zhí)行完setclasspath.bat之后,catalina.bat剩下的部分就開始了Tomcat服務(wù)器的啟動進(jìn)程。
直接執(zhí)行catalina.bat時,需要帶上命令行的參數(shù)。讀者可以在命令提示符窗口下,執(zhí)行catalina.bat,就會打印出catalina.bat命令的各種參數(shù)及其含義,如下圖所示。
(點擊查看大圖)圖 catalina.bat的各參數(shù)信息
其中常用的參數(shù)是start、run和stop。參數(shù)start表示在一個單獨的窗口中啟動Tomcat服務(wù)器,參數(shù)run表示在當(dāng)前窗口中啟動Tomcat服務(wù)器;參數(shù)stop表示關(guān)閉Tomcat服務(wù)器。我們執(zhí)行startup.bat,實際上執(zhí)行的就是“catalina.bat start”命令;執(zhí)行shutdown.bat,實際上執(zhí)行的是“catalina.bat stop”命令?!癱atalina.bat run”命令有時候是非常有用的,特別是當(dāng)我們需要查看Tomcat的出錯信息時。
在開發(fā)JSP程序時,經(jīng)常會碰到自己機(jī)器上的8080端口號被別的應(yīng)用程序占用,或者在配置server.xml時出現(xiàn)錯誤,當(dāng)通過startup.bat(相當(dāng)于執(zhí)行“catalina.bat start”)啟動Tomcat服務(wù)器時,如果啟動過程中出現(xiàn)嚴(yán)重錯誤,由于是在單獨的窗口中啟動Tomcat服務(wù)器,所以一旦啟動失敗,命令提示符窗口就自動關(guān)閉了,程序運(yùn)行中輸出的出錯信息也隨之消失,而且沒有任何的日志信息,這就使得我們沒有辦法找出錯誤原因。當(dāng)出現(xiàn)錯誤時,我們可以換成“catalina.bat run”命令再次啟動,一旦啟動失敗,僅僅是Tomcat服務(wù)器異常終止,但是在當(dāng)前的命令提示符窗口下仍然保留了啟動時的出錯信息,這樣我們就可以查找啟動失敗的原因了。
以上就對Tomcat 啟動分析做的資料整理,后續(xù)繼續(xù)補(bǔ)充相關(guān)資料,謝謝大家對本站的支持!
- linux下Nginx+Tomcat負(fù)載均衡配置方法
- windows下nginx+tomcat配置負(fù)載均衡的方法
- Java零基礎(chǔ)教程之Windows下安裝、啟動Tomcat服務(wù)器方法圖解(免安裝版)
- CentOS 6.5上的Tomcat啟動報錯問題解決方法
- JavaWeb項目中springmvc和tomcat對靜態(tài)文件的處理
- Windows下tomcat安裝圖文教程(安裝版)
- Javaweb開發(fā)環(huán)境Myeclipse6.5 JDK1.6 Tomcat6.0 SVN1.8配置教程
- WIN7系統(tǒng)JavaEE(tomcat7 Eclipse)環(huán)境配置教程(二)
- windows下tomcat7.0安裝圖文教程
- tomcat環(huán)境變量詳細(xì)配置步驟
- Win7系統(tǒng)下tomcat7.0配置教程
- Tomcat環(huán)境變量如何配置
相關(guān)文章
JAVA讀取文件流,設(shè)置瀏覽器下載或直接預(yù)覽操作
這篇文章主要介紹了JAVA讀取文件流,設(shè)置瀏覽器下載或直接預(yù)覽操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10java實現(xiàn)微信公眾平臺發(fā)送模板消息的示例代碼
這篇文章主要介紹了java實現(xiàn)微信公眾平臺發(fā)送模板消息的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Java+Selenium實現(xiàn)控制瀏覽器的啟動選項Options
這篇文章主要為大家詳細(xì)介紹了如何使用java代碼利用selenium控制瀏覽器的啟動選項Options的代碼操作,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2023-01-01SpringBoot+MDC實現(xiàn)鏈路調(diào)用日志的方法
MDC是 log4j 、logback及l(fā)og4j2 提供的一種方便在多線程條件下記錄日志的功能,這篇文章主要介紹了SpringBoot+MDC實現(xiàn)鏈路調(diào)用日志,需要的朋友可以參考下2022-12-12