I was trying to find out the difference between Apache Tomcat variables – CATALINA_OPTS and JAVA_OPTS in SO and surprised to see that there is no question/answer posted here yet. So I thought of sharing it here (with answer) after finding out the difference. Check the answer/difference below.
NOTE: At the time of this posting, we’re running Apache Tomcat v6.0.10 with JDK 6u32 on CentOS5 64-bit arch.
There are two environment variables –
CATALINA_OPTSandJAVA_OPTS– which are both used in thecatalina.shstartup and shutdown script for Tomcat.CATALINA_OPTS: Comment inside catalina.sh:
JAVA_OPTS: Comment inside catalina.sh:
So why are there two different variables? And what’s the difference?
Firstly, anything specified in EITHER variable is passed, identically, to the command that starts up Tomcat – the
startorruncommand – but only values set inJAVA_OPTSare passed to thestopcommand. That probably doesn’t make any difference to how Tomcat runs in practice as it only effects the END of a run, not the start.The second difference is more subtle. Other applications may also use
JAVA_OPTS, but only Tomcat will useCATALINA_OPTS. So if you’re setting environment variables for use only by Tomcat, you’ll be best advised to useCATALINA_OPTS, whereas if you’re setting environment variables to be used by other java applications as well, such as by JBoss, you should put your settings inJAVA_OPTS.Source: CATALINA_OPTS v JAVA_OPTS – What is the difference?