每次Tomcat服务通过批处理文件启动时都要执行一些操作

每次Tomcat服务通过批处理文件启动时都要执行一些操作,tomcat,batch-file,tomcat7,batch-processing,Tomcat,Batch File,Tomcat7,Batch Processing,是否可以修改Tomcat的某个批处理文件,以便在设置为web服务的Tomcat启动之前,执行类似于检查或修改某些文件的操作 所以我们想要的是,每当Tomcat服务启动时,对Tomcat托管的应用程序所需的某些特定文件进行一些修改 如果可以通过tomcat中的一个批处理文件进行修改,那么应该修改哪个批处理文件?任何想法都将不胜感激。顺便说一句,我们使用的是tomcat 7。简短回答:这是不可能的,至少没有简单的方法可以做到,正如Shashank Kadne在页面上指出的那样。除了通过startup

是否可以修改Tomcat的某个批处理文件,以便在设置为web服务的Tomcat启动之前,执行类似于检查或修改某些文件的操作

所以我们想要的是,每当Tomcat服务启动时,对Tomcat托管的应用程序所需的某些特定文件进行一些修改


如果可以通过tomcat中的一个批处理文件进行修改,那么应该修改哪个批处理文件?任何想法都将不胜感激。顺便说一句,我们使用的是tomcat 7。

简短回答:这是不可能的,至少没有简单的方法可以做到,正如Shashank Kadne在页面上指出的那样。除了通过
startup.bat
脚本启动Tomcat并将代码(或对bat文件的调用)放在
setenv.bat
文件中与
startup.bat
相同的文件夹中之外


如果您试图在单个Tomcat安装上运行Jenkins、Artifactory等应用程序(如该页所述),更好的方法是为每个附加应用程序创建一个Tomcat服务器实例(也称为
CATALINA_BASE

通过这种方式,您可以将每个应用程序作为Windows服务,并将其作为服务进行控制

假设:

  • Java安装在
    C:\Program Files\Java\jdk-7.0\u 03

  • Tomcat安装在
    C:\Program Files\Apache\Tomcat 7

  • 例如,您希望Jenkins服务器位于
    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\u BASE%\webapps


我上面给出的步骤是“从头开始”的,没有经过测试,我可能遗漏了一两个参数。这就是为什么存在
%CATALINA\u BASE%\bin\jenkinsw.exe
-启动它并调整参数,直到服务器工作。

您可以修改位于bin文件夹中的“startup.bat”。这里的问题是,当我们在services.msc中启动服务时,似乎没有调用startup.bat,因为我们的修改没有反映出来。但是,如果手动单击startup.bat,则会反映所做的修改。查看该服务的属性并查看它调用的可执行文件。如果它的startup.bat,则它应该可以工作。“tomcat7_x86.exe”是它调用的文件。查看这是否有帮助……您可以编写一个
ServletContextListener
并运行您的bat文件-检查我的答案。