【问题标题】:Tomcat6 Service Setup; programatically concatenate JvmOptions using Batch FileTomcat6 服务设置;使用批处理文件以编程方式连接 JvmOptions
【发布时间】:2011-07-03 23:19:42
【问题描述】:

这可能有点基本问题,但我似乎无法在网上找到答案。我正在尝试通过批处理文件自动将tomcat设置为服务。

我的批处理文件目前如下所示:

set memSize=512
set jvmOptions="-XX:MaxPermSize=512M"
ECHO Setting up tomcat as a service. 
call service.bat install
ECHO Setting the memory allocation to a maximum of %memSize%
ECHO Using JVM options %jvmOptions%
Tomcat6 //US// --JvmMx=%memSize%  --Startup="auto" --JvmOptions=%jvmOptions%

我面临的问题是运行 --JvmOptions 开关会覆盖在 tomcat6w.exe 中设置的所有当前 java 选项。

所以我的问题是,有谁知道如何让 --JvmOptions 开关将传递的值连接到当前值的末尾?

提前致谢

【问题讨论】:

    标签: windows-services batch-file tomcat6


    【解决方案1】:

    可以这么简单吗(如果我理解你的问题的话)

    set memSize=512
    
    REM I removed the quotes and reused the variable in its own definition
    set jvmOptions=%jvmOptions%-XX:MaxPermSize=512M
    
    ECHO Setting up tomcat as a service. 
    call service.bat install
    ECHO Setting the memory allocation to a maximum of %memSize%
    ECHO Using JVM options %jvmOptions%
    
    REM Added the quotes back here
    Tomcat6 //US// --JvmMx=%memSize%  --Startup="auto" --JvmOptions="%jvmOptions%"
    

    【讨论】:

    • 谢谢,但问题是 jvmOptions 不是特定于 Tomcat6 服务安装的环境变量。感谢您的帮助。
    【解决方案2】:

    经过长时间的艰苦搜索,我确实设法在代码示例中找到了答案。但后来让我觉得很愚蠢,我注意到答案也是here,就在我眼皮底下的Tomcat6 Windows 服务操作指南页面上。通过用 ++ 替换 -- 选项被连接而不是替换原来的选项。

    所以批处理文件变成了。

    set memSize=512
    set jvmOptions="-XX:MaxPermSize=512M"
    ECHO Setting up tomcat as a service. 
    call service.bat install
    ECHO Setting the memory allocation to a maximum of %memSize%
    ECHO Using JVM options %jvmOptions%
    Tomcat6 //US// --JvmMx=%memSize%  --Startup="auto" ++JvmOptions=%jvmOptions%
    

    谢谢。

    【讨论】:

      【解决方案3】:

      有点旧的帖子,但由于另一个应用程序正在升级(我使用松散的术语),我必须执行一堆 Tomcat 卸载/安装,并试图弄清楚如何做类似的事情以避免使用 UI并确保一致性。

      一些脚本技巧(根据我目前的经验):

      REM -- Use variables for the Tomcat install directory & executable:
      set TomcatDir=%ProgramFiles%\Tomcat
      set TomcatExe=%TomcatDir%\bin\Tomcat7.exe
      
      REM -- If using multiple instances, turn these in to array
      set TomcatInstance[1]=Tomcat7
      set TomcatInstance[2]=MyAppInstance1
      set TomcatInstance[3]=MyAppInstance2
      set TomcatInstance[4]=MyAppInstance3
      set TomcatInstance[5]=MyAppInstance4
      
      REM -- When updating/adding Java options and you need to use a ";" between
      REM -- values, single-quote the semi-colon, ';' so it isn't intepretted as a CrLf
      REM -- For example,
      call "%TomcatExe%" //US/%TomcatInstance% ++JvmOptions "-Djava.library.path=%TomcatDir%\bin';'%TomcatDir%\endorsed"
      
      REM -- So to ensure all instances have the same settings...
      for /L %I in (1,1,5) do (
          call "%TomcatExe%" //US/!TomcatInstance[%I]! ++JvmOptions "-Djava.library.path=%TomcatDir%\bin';'%TomcatDir%\endorsed"
      )
      
      REM -- Block scripts sections with setlocal/endlocal
      REM -- "EnableDelayedExpansion" allows the above delayed variable expansion to occur
      ::--==--==--==--==--==--==--==--==--==--==
      :Routine_Name
      ::--==--==--==--==--==--==--==--==--==--==
      setlocal EnableDelayedExpansion
      echo script commands go here
      endlocal
      goto :EOF
      

      注意:这在实际的脚本语言(vbs、js 或 ps)中会容易得多,但我需要让脚本“易于”修改,以便在我离开当前演出时为接替我的人修改。

      FWIW,Tomcat7 的文档是http://tomcat.apache.org/tomcat-7.0-doc/windows-service-howto.html。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-03
        • 2010-10-27
        • 1970-01-01
        • 2012-05-31
        • 2011-08-29
        • 1970-01-01
        • 2013-12-10
        • 1970-01-01
        相关资源
        最近更新 更多