CATALINA_OPTS vs JAVA_OPTS - Was ist der Unterschied?

105

Ich habe versucht, den Unterschied zwischen Apache Tomcat-Variablen herauszufinden - CATALINA_OPTSund JAVA_OPTSin SO und war überrascht zu sehen, dass hier noch keine Frage / Antwort veröffentlicht wurde. Also dachte ich daran, es hier (mit Antwort) zu teilen, nachdem ich den Unterschied herausgefunden hatte. Überprüfen Sie die Antwort / den Unterschied unten.

HINWEIS: Zum Zeitpunkt dieser Veröffentlichung führen wir Apache Tomcat v6.0.10 mit JDK 6u32 auf CentOS5 64-Bit-Arch aus.

Gnanam
quelle

Antworten:

155

Es gibt zwei Umgebungsvariablen - CATALINA_OPTSund JAVA_OPTS- die beide verwendet werden , in dem catalina.sh Starten und Herunterfahren Skript für Tomcat. Sie werden in Kommentaren in dieser Datei wie folgt beschrieben:

[JAVA_OPTS]: (optional) Java-Laufzeitoptionen, die verwendet werden, wenn der Befehl "start", "stop" oder "run" ausgeführt wird

und

[CATALINA_OPTS]: (optional) Java-Laufzeitoptionen, die verwendet werden, wenn der Befehl "start" oder "run" ausgeführt wird

Warum gibt es zwei verschiedene Variablen? Und was ist der Unterschied?

Zunächst wird alles, was in JEDER Variablen angegeben ist, identisch an den Befehl übergeben, der Tomcat startet - den Befehl "start" oder "run" -, aber nur die in JAVA_OPTS festgelegten Werte werden an den Befehl "stop" übergeben. Das macht wahrscheinlich keinen Unterschied, wie Tomcat in der Praxis läuft, da es nur das Ende eines Laufs beeinflusst, nicht den Start.

Der zweite Unterschied ist subtiler. Andere Anwendungen verwenden möglicherweise auch JAVA_OPTS, aber nur Tomcat verwendet CATALINA_OPTS. Wenn Sie also Umgebungsvariablen festlegen, die nur von Tomcat verwendet werden, sollten Sie CATALINA_OPTS verwenden. Wenn Sie Umgebungsvariablen festlegen, die auch von anderen Java-Anwendungen wie JBoss verwendet werden sollen, sollten Sie dies festlegen Ihre Einstellungen in JAVA_OPTS.

Quelle: CATALINA_OPTS v JAVA_OPTS - Was ist der Unterschied?

Gnanam
quelle
11
Es ist auch nützlich, sie als "brauche ich etwas für den Start von Tomcat" oder "brauche ich etwas für jede JVM" zu betrachten. Lassen Sie uns sagen , dass wir die Einrichtung JMX versuchen , auf einer verteilten Umgebung überwachen und wir hinter einer Firewall sind - wir zwei RMI - Ports so brauchen Djava.rmi.server als einzurichten Start arg. Würden wir dies als JAVA_OPT tun, löst ein Herunterfahren eine neue JVM aus, die versucht, JMX-Ports abzuhören, kann sie nicht abrufen, da Tomcat sie bereits abhört, und die JVM stoppt mit einem Fehler, dass sie bereits verwendet wird - nicht das, was wir tun willst du es?
Joao Figueiredo