【问题标题】:CATALINA_OPTS vs JAVA_OPTS - What is the difference?CATALINA_OPTS 与 JAVA_OPTS - 有什么区别?
【发布时间】:2012-06-28 15:47:49
【问题描述】:

我试图找出 Apache Tomcat 变量之间的区别 - CATALINA_OPTS 中的 CATALINA_OPTSJAVA_OPTS 并且惊讶地发现这里还没有发布任何问题/答案。所以我想在发现差异后在这里分享它(有答案)。检查下面的答案/差异。

注意:在发布本文时,我们在 CentOS5 64 位架构上运行 Apache Tomcat v6.0.10 和 JDK 6u32。

【问题讨论】:

    标签: java tomcat jvm tomcat6


    【解决方案1】:

    我想补充一点,JAVA_OPTSCATALINA_OPTS互为补充的:如果你定义了两个环境变量,两者的内容将被串联和传递给 startrun 命令 - 正如上面 Gnanam 所解释的那样。

    您也可以参考original source of catalina.sh

    【讨论】:

      【解决方案2】:

      在关机期间,tomcat 启动多个 vm,正如 @joao 的评论中所解释的那样。 如果您在 tomcat 关闭期间记录一些数据,请使用 CATALINA_OPTS 而不是 JAVA_OPTS。一个很好的例子是当我想在 jacoco.exec 期间保存数据时,我应该使用 CATALINA_OPTS 而不是 JAVA_OPTS。

      【讨论】:

        【解决方案3】:

        有两个环境变量 - CATALINA_OPTSJAVA_OPTS - 都在 Tomcat 的 catalina.sh 启动和关闭脚本中使用。它们在该文件中的 cmets 中被描述为:

        [JAVA_OPTS]:(可选)“开始”、“停止”或“运行”时使用的 Java 运行时选项 命令被执行

        [CATALINA_OPTS]:(可选)Java 运行时选项 执行“start”或“run”命令时使用

        那么为什么会有两个不同的变量呢?又有什么区别?

        首先,在 EITHER 变量中指定的任何内容都被传递给启动 Tomcat 的命令——“start”或“run”命令——但只有 JAVA_OPTS 中设置的值被传递给“stop”命令。这可能对 Tomcat 在实践中的运行方式没有任何影响,因为它只影响运行的结束,而不是开始。

        第二个区别更微妙。其他应用程序也可能使用 JAVA_OPTS,但只有 Tomcat 会使用 CATALINA_OPTS。因此,如果您设置的环境变量仅供 Tomcat 使用,您最好使用 CATALINA_OPTS,而如果您设置的环境变量也可供其他 java 应用程序使用,例如 JBoss,您应该将您在 JAVA_OPTS 中的设置。

        来源: CATALINA_OPTS v JAVA_OPTS - What is the difference?

        【讨论】:

        • 将它们视为“我是否需要启动 tomcat 的东西”或“我是否需要每个 JVM 的东西”也很有用。假设我们试图在分布式环境中设置 JMX 监控并且我们在防火墙后面 - 我们需要两个 RMI 端口,因此将 Djava.rmi.server 设置为 startup 参数。我们会作为 JAVA_OPT 执行此操作吗?关闭会触发一个新的 JVM,该 JVM 会尝试监听 JMX 端口,但由于 Tomcat 已经在监听它,所以无法抓取它,并且 JVM 将停止并出现关于它已经在使用中的错误——而不是我们的想要吗?
        猜你喜欢
        • 2011-04-25
        • 1970-01-01
        • 2011-02-19
        • 2013-03-14
        • 2018-09-14
        • 2014-01-03
        • 2021-12-22
        • 2017-10-25
        • 2011-06-09
        相关资源
        最近更新 更多