【发布时间】:2012-06-28 15:47:49
【问题描述】:
我试图找出 Apache Tomcat 变量之间的区别 - CATALINA_OPTS 中的 CATALINA_OPTS 和 JAVA_OPTS 并且惊讶地发现这里还没有发布任何问题/答案。所以我想在发现差异后在这里分享它(有答案)。检查下面的答案/差异。
注意:在发布本文时,我们在 CentOS5 64 位架构上运行 Apache Tomcat v6.0.10 和 JDK 6u32。
【问题讨论】:
我试图找出 Apache Tomcat 变量之间的区别 - CATALINA_OPTS 中的 CATALINA_OPTS 和 JAVA_OPTS 并且惊讶地发现这里还没有发布任何问题/答案。所以我想在发现差异后在这里分享它(有答案)。检查下面的答案/差异。
注意:在发布本文时,我们在 CentOS5 64 位架构上运行 Apache Tomcat v6.0.10 和 JDK 6u32。
【问题讨论】:
我想补充一点,JAVA_OPTS 和 CATALINA_OPTS 是互为补充的:如果你定义了两个环境变量,两者的内容将被串联和传递给 start 和 run 命令 - 正如上面 Gnanam 所解释的那样。
【讨论】:
在关机期间,tomcat 启动多个 vm,正如 @joao 的评论中所解释的那样。 如果您在 tomcat 关闭期间记录一些数据,请使用 CATALINA_OPTS 而不是 JAVA_OPTS。一个很好的例子是当我想在 jacoco.exec 期间保存数据时,我应该使用 CATALINA_OPTS 而不是 JAVA_OPTS。
【讨论】:
有两个环境变量 - CATALINA_OPTS 和 JAVA_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 中的设置。
【讨论】: