CATALINA_OPTS vs JAVA_OPTS - Quelle est la différence?

105

J'essayais de découvrir la différence entre les variables Apache Tomcat - CATALINA_OPTSet JAVA_OPTSdans SO et surpris de voir qu'il n'y a pas encore de question / réponse publiée ici. J'ai donc pensé à le partager ici (avec réponse) après avoir découvert la différence. Vérifiez la réponse / la différence ci-dessous.

REMARQUE: Au moment de cette publication, nous exécutons Apache Tomcat v6.0.10 avec JDK 6u32 sur l'archive CentOS5 64 bits.

Gnanam
la source

Réponses:

156

Il existe deux variables d'environnement - CATALINA_OPTSet JAVA_OPTS- qui sont toutes deux utilisées dans le script de démarrage et d'arrêt catalina.sh pour Tomcat. Ils sont décrits dans les commentaires de ce fichier comme suit:

[JAVA_OPTS]: (optionnel) Options d'exécution Java utilisées lorsque la commande "start", "stop" ou "run" est exécutée

et

[CATALINA_OPTS]: (optionnel) Options d'exécution Java utilisées lorsque la commande "start" ou "run" est exécutée

Alors pourquoi y a-t-il deux variables différentes? Et quelle est la différence?

Premièrement, tout ce qui est spécifié dans l'une ou l'autre variable est passé, de manière identique, à la commande qui démarre Tomcat - la commande "start" ou "run" - mais seules les valeurs définies dans JAVA_OPTS sont passées à la commande "stop". Cela ne fait probablement aucune différence sur la façon dont Tomcat fonctionne dans la pratique car cela n'affecte que la fin d'une course, pas le début.

La deuxième différence est plus subtile. D'autres applications peuvent également utiliser JAVA_OPTS, mais seul Tomcat utilisera CATALINA_OPTS. Donc, si vous définissez des variables d'environnement pour une utilisation uniquement par Tomcat, il est préférable d'utiliser CATALINA_OPTS, alors que si vous définissez des variables d'environnement à utiliser également par d'autres applications Java, telles que JBoss, vous devez mettre vos paramètres dans JAVA_OPTS.

Source: CATALINA_OPTS v JAVA_OPTS - Quelle est la différence?

Gnanam
la source
11
Il est également utile de les considérer comme «ai-je besoin de quelque chose pour le démarrage de Tomcat» ou «ai-je besoin de quelque chose pour chaque JVM». Disons que nous essayons de configurer la surveillance JMX sur un environnement distribué et que nous sommes derrière un pare-feu - nous aurons donc besoin de deux ports RMI pour configurer Djava.rmi.server comme argument de démarrage . Faisons-nous cela en tant que JAVA_OPT, un arrêt déclenche une nouvelle JVM qui essaie d'écouter sur les ports JMX, ne peut pas l'attraper car tomcat l'écoute déjà et la JVM s'arrêtera avec une erreur indiquant qu'elle est déjà utilisée - pas ce que nous voulez-vous?
Joao Figueiredo