CATALINA_OPTS vs JAVA_OPTS - Qual è la differenza?


105

Stavo cercando di scoprire la differenza tra le variabili Apache Tomcat - CATALINA_OPTSe JAVA_OPTSin SO e sono sorpreso di vedere che non ci sono ancora domande / risposte pubblicate qui. Quindi ho pensato di condividerlo qui (con risposta) dopo aver scoperto la differenza. Controlla la risposta / differenza di seguito.

NOTA: Al momento di questo post, stiamo eseguendo Apache Tomcat v6.0.10 con JDK 6u32 su CentOS5 a 64 bit arch.

Risposte:


156

Ci sono due variabili d'ambiente - CATALINA_OPTSe JAVA_OPTS- che sono entrambe usate nello script di avvio e spegnimento catalina.sh per Tomcat. Sono descritti nei commenti all'interno di quel file come:

[JAVA_OPTS]: (facoltativo) opzioni di runtime Java utilizzate quando viene eseguito il comando "start", "stop" o "run"

e

[CATALINA_OPTS]: (opzionale) Opzioni di runtime Java utilizzate quando viene eseguito il comando "start" o "run"

Allora perché ci sono due variabili diverse? E qual è la differenza?

In primo luogo, qualsiasi cosa specificata in ENTRAMBI le variabili viene passata, in modo identico, al comando che avvia Tomcat - il comando "start" o "run" - ma al comando "stop" vengono passati solo i valori impostati in JAVA_OPTS. Questo probabilmente non fa alcuna differenza sul modo in cui Tomcat viene eseguito in pratica poiché influisce solo sulla fine di una corsa, non sull'inizio.

La seconda differenza è più sottile. Anche altre applicazioni possono utilizzare JAVA_OPTS, ma solo Tomcat utilizzerà CATALINA_OPTS. Quindi, se stai impostando variabili di ambiente per l'utilizzo solo da Tomcat, ti consigliamo di utilizzare CATALINA_OPTS, mentre se stai impostando variabili di ambiente da utilizzare anche da altre applicazioni java, come JBoss, dovresti inserire le tue impostazioni in JAVA_OPTS.

Fonte: CATALINA_OPTS v JAVA_OPTS - Qual è la differenza?


11
È anche utile pensarli come "ho bisogno di qualcosa per l'avvio di Tomcat" o "ho bisogno di qualcosa per ogni JVM". Diciamo che stiamo cercando di configurare il monitoraggio JMX su un ambiente distribuito e siamo dietro un firewall: avremo quindi bisogno di due porte RMI per configurare Djava.rmi.server come arg di avvio . Lo faremmo come un JAVA_OPT un arresto spara una nuova JVM che cerca di ascoltare sulle porte JMX, non può prenderlo perché Tomcat lo ha già in ascolto e la JVM si fermerà con un errore che è già in uso - non quello che noi lo vuoi?
Joao Figueiredo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.