【问题标题】:JVM Options while running Tomcat8 using startup.bat on windows在 Windows 上使用 startup.bat 运行 Tomcat8 时的 JVM 选项
【发布时间】:2020-03-05 04:47:05
【问题描述】:

我想为我的应用程序提供一些 JVM 选项。该应用程序是一个 Web 应用程序,并打包为 war。我正在使用 Tomcat8 来部署这场战争。我想在使用 statup.bat 文件运行 tomcat 时提供 JVM 选项。

我可以使用 eclipse 成功运行应用程序。 eclipse 服务器配置提供使用启动配置提供 JVM 参数。

我尝试了以下方法来提供 JVM 选项。

  1. 使用命令set JAVA_OPTS="........." 在bin 目录中使用setenv.bat。 示例 - 我分别在setenv.bat 文件中尝试了以下命令。
    set JAVA_OPTS="-Ddp.registry.local=false -Ddp.registry.logon.id=dpconf -Ddp.registry.logon.pwd=password-Ddp.registry.host.address=ltest16.sto1.3s.intern -Ddp.registry.appid=1234 -Ddp.registry.execunit=BillingDataProvider -Ddp.registry.instance=bdp -Ddp.registry.instance.lowercase=bdp -Ddp.registry.host.port=3700 -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger -Djava.util.prefs.PreferencesFactory=com.smarttrust.common.mechanism.prefs.RegistryJasapPreferencesFactory -Ddp.log.root=C:/Users/dir/softools/apache-tomcat-8.0.5/logs -Ddp.server.log.root=C:/Users/dir/softools/apache-tomcat-8.0.5/logs -Dota.sc.log.root=C:/Users/dir/softools/apache-tomcat-8.0.5/logs -Dlog4j.configuration=file:C:/Users/dir/softools/apache-tomcat-8.0.5/logs/log4j.xml -Djava.util.logging.config.file=C:/Users/dir/softools/apache-tomcat-8.0.5/logs/bdp-log.properties"
    set CATALINA_OPTS="-Ddp.registry.local=false -Ddp.registry.logon.id=dpconf -Ddp.registry.logon.pwd=password -Ddp.registry.host.address=ltest16.sto1.3s.intern -Ddp.registry.appid=1234 -Ddp.registry.execunit=BillingDataProvider -Ddp.registry.instance=bdp -Ddp.registry.instance.lowercase=bdp -Ddp.registry.host.port=3700 -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14Logger -Djava.util.prefs.PreferencesFactory=com.smarttrust.common.mechanism.prefs.RegistryJasapPreferencesFactory -Ddp.log.root=C:/Users/dir/softools/apache-tomcat-8.0.5/logs -Ddp.server.log.root=C:/Users/dir/softools/apache-tomcat-8.0.5/logs -Dota.sc.log.root=C:/Users/dir/softools/apache-tomcat-8.0.5/logs -Dlog4j.configuration=file:C:/Users/dir/softools/apache-tomcat-8.0.5/logs/log4j.xml -Djava.util.logging.config.file=C:/Users/dir/softools/apache-tomcat-8.0.5/logs/bdp-log.properties"
  1. 在运行 startup.bat 之前,在命令提示符下导出 JAVA_OPTS,如 set JAVA_OPTS="....."。以上命令在运行startup.bat之前在命令提示符下导出。

  2. 以 context.xml 文件为例 -

        <context>
         .....................
        <Environment name="dp.registry.local" value="false" type="java.lang.String"/>
         ........................
        </context>

但没有运气。我不确定我在做什么错误。

【问题讨论】:

  • 您是否以-D 为前缀?见stackoverflow.com/questions/44745261/…
  • 您可能需要改用CATALINA_OPTS
  • @Thomas Timbul 不,我没有使用 -D。我尝试在命令提示符下使用 CATALINA_OPTS,但它不起作用
  • 当您说“不工作”时 - 您是否介意提供一个您添加的参数的具体示例,以及您如何确认它是否有效?
  • 问题已更新。

标签: java tomcat8 startup jvm-arguments


【解决方案1】:

问题在于双引号。从命令提示符导出时不要使用双引号。只需设置 JAVA_OPTS=-D..... -D.... 空格分隔的选项列表。

如果你从 catlina.bat 中回显 java_opts,它会给你一个清晰的画面。

【讨论】:

    【解决方案2】:

    建议你使用CATALINA_OPTS,见catalina.bat中的cmets。

    其次,VM选项需要单独加上-D前缀,例如:

    Linux/Unix Shell:

    CATALINA_OPTS="-Dcom.sun.management.jmxremote=true \
                   -Dcom.sun.management.jmxremote.ssl=false \
                   -Dcom.sun.management.jmxremote.authenticate=false \
                   -Djava.rmi.server.hostname=192.168.40.10"
    

    如 cmets 中所述,windows 批处理中的多行转义字符为^,由于某种原因,不需要添加双引号。

    Windows bat/cmd

    CATALINA_OPTS=-Dcom.sun.management.jmxremote=true ^
                   -Dcom.sun.management.jmxremote.ssl=false ^
                   -Dcom.sun.management.jmxremote.authenticate=false ^
                   -Djava.rmi.server.hostname=192.168.40.10
    

    【讨论】:

    • 我使用了两种方式,有 -D 和没有 -D,两种方式都不起作用。我还使用了 CATALINA_OPTS setenv.bat,例如 set CATALINA_OPTS=" -D...... -D....... -D...." 也不起作用。
    • 您的示例是基于 shell 的示例。他正在使用批处理。行分隔符是 ^ 并且不需要双引号,因为这就是批处理的工作方式(以某种方式)。
    猜你喜欢
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-27
    • 2015-10-11
    • 2011-05-13
    • 2012-12-01
    相关资源
    最近更新 更多