CATALINA_OPTS与JAVA_OPTS - 有什么区别?

时间:2012-06-27 08:38:19

标签: java tomcat jvm tomcat6

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

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

2 个答案:

答案 0 :(得分:142)

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

  

[JAVA_OPTS] :(可选)“start”,“stop”或“run”时使用的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?

答案 1 :(得分:0)

Durung关闭后,tomcat启动了多个虚拟机,如@joao的注释中所述。 如果要在tomcat shutdowm期间记录一些数据,请使用CATALINA_OPTS而不是JAVA_OPTS。一个很好的例子是,当我想在jacoco.exec中保存数据时,我应该使用CATALINA_OPTS而不是JAVA_OPTS。