CATALINA_OPTS与JAVA_OPTS - 有什么区别?

Gna*_*nam 102 java tomcat jvm tomcat6

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

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

Gna*_*nam 149

有两个环境变量 - 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 - 有什么区别?

  • 将它们视为"我是否需要用于tomcat启动的东西"或"我是否需要为每个JVM提供一些东西"也是有用的.假设我们正在尝试在分布式环境中设置JMX监控,并且我们在防火墙后面 - 我们需要两个RMI端口,因此将Djava.rmi.server设置为*startup*arg.我们会以JAVA_OPT的方式执行此操作吗?关闭会触发一个尝试侦听JMX端口的新JVM,无法抓取它,因为tomcat已经监听它并且JVM将因为它已经在使用中而停止 - 而不是我们想要的是它吗? (11认同)