CATALINA_OPTS vs JAVA_OPTS - 有什么区别?

2022-08-31 09:10:22

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

注意:在撰写本文时,我们正在 CentOS5 64 位 arch 上运行带有 JDK 6u32 的 Apache Tomcat v6.0.10。


答案 1

有两个环境变量 - 和 - 都在 Tomcat 的启动和关闭脚本中使用。CATALINA_OPTSJAVA_OPTScatalina.sh

CATALINA_OPTScatalina.sh 内评论

#   CATALINA_OPTS   (Optional) Java runtime options used when the "start",
#                   "run" or "debug" command is executed.
#                   Include here and not in JAVA_OPTS all options, that should
#                   only be used by Tomcat itself, not by the stop process,
#                   the version command etc.
#                   Examples are heap size, GC logging, JMX ports etc.

JAVA_OPTScatalina.sh 内评论

#   JAVA_OPTS       (Optional) Java runtime options used when any command
#                   is executed.
#                   Include here and not in CATALINA_OPTS all options, that
#                   should be used by Tomcat and also by the stop process,
#                   the version command etc.
#                   Most options should go into CATALINA_OPTS.

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

  1. 首先,在任一变量中指定的任何内容都以相同的方式传递给启动 Tomcat 的命令 - or 命令 - 但只有 中设置的值被传递给该命令。这可能对Tomcat在实践中的运行方式没有任何影响,因为它只影响运行的结束,而不是开始。startrunJAVA_OPTSstop

  2. 第二个区别更微妙。其他应用程序也可以使用,但只有Tomcat会使用。因此,如果您要将环境变量设置为仅供 Tomcat 使用,则最好使用 ,而如果您要将环境变量也设置为由其他 Java 应用程序(如 JBoss)使用,则应将设置放入 。JAVA_OPTSCATALINA_OPTSCATALINA_OPTSJAVA_OPTS

资料来源:CATALINA_OPTS v JAVA_OPTS - 有什么区别?


答案 2

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

您也可以参考原始来源 catalina.sh


推荐