tomcat - 每次 Tomcat 服务启动时通过批处理文件做一些事情

标签 tomcat batch-file tomcat7 batch-processing

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

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

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

最佳答案

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


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

这样您就可以将每个应用程序作为 Windows 服务并将其作为服务进行控制。

假设:

  • 您的 Java 安装在 C:\Program Files\Java\jdk-7.0_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 网络应用程序(WAR 文件)部署到 %CATALINA_BASE%\webapps

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

关于tomcat - 每次 Tomcat 服务启动时通过批处理文件做一些事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9256612/

相关文章:

tomcat - 将 Apache Tomcat 作为 Windows 服务运行时如何限制 stdout.log 文件大小?

apache - Apache2.2如何设置HttpOnly和Secure参数?

batch-file - 批处理 if 语句不起作用

batch-file - 批处理 : Auto escape special characters

jsf-2 - 外部 facelets 模板 - 它是否被缓存?

tomcat - 在 webapps/中使用自动部署在 Tomcat 中指定嵌套上下文路径

windows - 如何重新评估批处理变量?

java - 带有 MySql 的 Tomcat 7

java - 运行 Tomcat 7.0.34 错误 : Can't find catalina. jar

java - 使用 JPA 的 Web 应用程序无法在外部 Tomcat 服务器上运行