是否可以修改Tomcat的某個批處理文件,以便在設置爲Web服務的Tomcat啓動之前執行諸如檢查或修改某些文件的操作?Tomcat服務每次啓動時都要通過批處理文件
所以我們想要的是每次Tomcat服務啓動時,對由tomcat託管的應用程序所需的某些特定文件進行一些修改。
如果可以通過tomcat中的某個批處理文件來完成,那麼我們應該修改哪個批處理文件?任何想法將不勝感激。順便說一句,我們正在使用tomcat 7.
是否可以修改Tomcat的某個批處理文件,以便在設置爲Web服務的Tomcat啓動之前執行諸如檢查或修改某些文件的操作?Tomcat服務每次啓動時都要通過批處理文件
所以我們想要的是每次Tomcat服務啓動時,對由tomcat託管的應用程序所需的某些特定文件進行一些修改。
如果可以通過tomcat中的某個批處理文件來完成,那麼我們應該修改哪個批處理文件?任何想法將不勝感激。順便說一句,我們正在使用tomcat 7.
簡短回答:這是不可能的,至少有沒有簡單的方法來做到這一點,就像Shashank Kadne指出的那樣。除了通過startup.bat
腳本啓動Tomcat,並將setenv.bat
文件中的代碼(或對BAT文件的調用)放在與startup.bat
相同的文件夾中。
如果你想運行像詹金斯Artifactory的和都在一個單一的Tomcat安裝的應用程序 - 該網頁上所討論的 - 更好的方法是創建一個Tomcat服務器實例(也稱爲CATALINA_BASE
)爲每個附加應用程序
通過這種方式,您可以將每個應用程序作爲Windows服務並將其作爲服務進行控制。
假設:
您的Java安裝在C:\Program Files\Java\jdk-7.0_03
。
您的Tomcat安裝在C:\Program Files\Apache\Tomcat 7
。
你想要詹金斯服務器將在C:\Program Files\My Jenkins
。
開始cmd.exe
,並執行以下操作:
C:\Users\me> set "JAVA_HOME=C:\Program Files\Java\jdk-7.0_03"
C:\Users\me> set "CATALINA_HOME=C:\Program Files\Apache\Tomcat 7"
C:\Users\me> set "CATALINA_BASE=C:\Program Files\My Jenkins"
C:\Users\me> cd "%CATALINA_BASE%"
C:\Program Files\My Jenkins> mkdir "%CATALINA_BASE%\bin"
C:\...Jenkins> mkdir "%CATALINA_BASE%\conf"
C:\...Jenkins> mkdir "%CATALINA_BASE%\lib"
C:\...Jenkins> mkdir "%CATALINA_BASE%\logs"
C:\...Jenkins> mkdir "%CATALINA_BASE%\temp"
C:\...Jenkins> mkdir "%CATALINA_BASE%\webapps"
C:\...Jenkins> mkdir "%CATALINA_BASE%\work"
C:\...Jenkins> copy "%CATALINA_HOME%\conf\*.*" "%CATALINA_BASE%\conf"
C:\...Jenkins> copy "%CATALINA_HOME%\bin\*.exe" "%CATALINA_BASE%\bin"
C:\...Jenkins> copy "%CATALINA_HOME%\bin\tomcat-juli.jar" "%CATALINA_BASE%\bin"
C:\...Jenkins> cd bin
C:\...Jenkins> ren tomcat7.exe jenkins.exe
C:\...Jenkins> ren tomcat7w.exe jenkinsw.exe
下一個命令應該是單行
C:\...Jenkins> jenkins.exe //IS//Jenkins --DisplayName "Jenkins CI"
--Description "Jenkins Continuous Integration Server on Tomcat"
--Startup auto --JavaHome "%JAVA_HOME%" --StartMode jvm --StopMode jvm
--StartClass org.apache.catalina.startup.Bootstrap
--StopClass org.apache.catalina.startup.Bootstrap
--StartParams start --StopParams stop
--Classpath "%CATALINA_HOME%\bin\bootstrap.jar;%CATALINA_BASE%\bin\tomcat-juli.jar;"
--StdOutput auto --StdError auto --LogLevel INFO
--LogPath "%CATALINA_BASE%\logs"
--JvmOptions -Xrs;-Dcatalina.home=%CATALINA_HOME%;-Dcatalina.base=%CATALINA_BASE%;
您現在應該有Jenkins CI
服務在您的 「服務」窗口。
將Jenkins Web應用程序(WAR
文件)部署到%CATALINA_BASE%\webapps
。
上面給出的步驟是「從頭開始」,沒有經過測試,我可能錯過了一個或兩個參數。這就是爲什麼有%CATALINA_BASE%\bin\jenkinsw.exe
- 啓動它並調整參數,直到服務器運行。
你可以寫一個'ServletContextListener'並運行你的BAT文件 - 檢查我的答案[這個問題](http://stackoverflow.com/questions/9255003)。 – Cebence 2012-03-30 19:45:15
謝謝Cebence。這將是一個很好的信息。 – 2012-04-02 09:02:58
您可以修改位於bin文件夾中的「startup.bat」。 – 2012-02-13 07:02:20
這裏的問題是當我們在services.msc中啓動服務時,似乎沒有調用startup.bat,因爲我們的修改未被反映出來。但是,如果startup.bat被手動點擊,修改所做的反映。 – 2012-02-13 07:23:57
查看該服務的屬性並查看它調用的可執行文件。如果它的startup.bat那麼它應該工作。 – 2012-02-13 07:28:01