115

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

注意:在发布这篇文章时,我们在 CentOS5 64 位架构上运行带有 JDK 6u32 的 Apache Tomcat v6.0.10。

4

3 回答 3

166

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

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

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

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

首先,在 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 - 有什么区别?

于 2012-06-27T08:38:19.463 回答
0

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

于 2020-10-20T17:52:05.287 回答
0

我想补充一点JAVA_OPTSCATALINA_OPTS它们是相辅相成的:如果你定义了两个环境变量,两者的内容将被连接起来并传递给startandrun命令——正如上面 Gnanam 所解释的那样。

也可以参考catalina.sh的原始出处

于 2022-01-20T09:02:21.740 回答