2012-02-13 29 views
1

是否可以修改Tomcat的某個批處理文件,以便在設置爲Web服務的Tomcat啓動之前執行諸如檢查或修改某些文件的操作?Tomcat服務每次啓動時都要通過批處理文件

所以我們想要的是每次Tomcat服務啓動時,對由tomcat託管的應用程序所需的某些特定文件進行一些修改。

如果可以通過tomcat中的某個批處理文件來完成,那麼我們應該修改哪個批處理文件?任何想法將不勝感激。順便說一句,我們正在使用tomcat 7.

+0

您可以修改位於bin文件夾中的「startup.bat」。 – 2012-02-13 07:02:20

+0

這裏的問題是當我們在services.msc中啓動服務時,似乎沒有調用startup.bat,因爲我們的修改未被反映出來。但是,如果startup.bat被手動點擊,修改所做的反映。 – 2012-02-13 07:23:57

+0

查看該服務的屬性並查看它調用的可執行文件。如果它的startup.bat那麼它應該工作。 – 2012-02-13 07:28:01

回答

0

簡短回答:這是不可能的,至少有沒有簡單的方法來做到這一點,就像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 - 啓動它並調整參數,直到服務器運行。

+0

你可以寫一個'ServletContextListener'並運行你的BAT文件 - 檢查我的答案[這個問題](http://stackoverflow.com/questions/9255003)。 – Cebence 2012-03-30 19:45:15

+0

謝謝Cebence。這將是一個很好的信息。 – 2012-04-02 09:02:58

相關問題