123 votes

CATALINA_OPTS vs JAVA_OPTS - Quelle est la différence ?

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

NOTE : Au moment de cette publication, nous utilisons Apache Tomcat v6.0.10 avec JDK 6u32 sur CentOS5 64-bit arch.

178voto

Gnanam Points 2169

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

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

y

[CATALINA_OPTS] : options d'exécution de Java (facultatif) utilisées lors de l'exécution de la commande "start" ou "run".

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

Tout d'abord, tout ce qui est spécifié dans l'une ou l'autre des variables est transmis, 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 transmises à la commande "stop". Cela ne change probablement rien au fonctionnement de Tomcat dans la pratique, car cela n'affecte que la fin d'une exécution, 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. Ainsi, si vous définissez des variables d'environnement destinées à être utilisées uniquement par Tomcat, il est préférable d'utiliser CATALINA_OPTS, alors que si vous définissez des variables d'environnement destinées à être utilisées par d'autres applications Java, comme JBoss, vous devez définir vos paramètres dans JAVA_OPTS.

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

12 votes

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 mettre en place la surveillance JMX sur un environnement distribué et que nous sommes derrière un pare-feu - nous aurons besoin de deux ports RMI donc de configurer Djava.rmi.server en tant que démarrage arg. Si nous faisions cela en tant que JAVA_OPT, un arrêt déclencherait une nouvelle JVM qui essaierait d'écouter les ports JMX, elle ne pourrait pas le faire car tomcat l'a déjà écouté et la JVM s'arrêterait avec une erreur disant qu'elle est déjà utilisée - ce n'est pas ce que nous voulons, n'est-ce pas ?

-1voto

vsingh Points 1099

Pendant l'arrêt, tomcat lance plusieurs vm comme expliqué dans le commentaire de @joao. Si vous enregistrez des données pendant l'arrêt de tomcat, utilisez CATALINA_OPTS et non JAVA_OPTS. Un bon exemple est lorsque je veux enregistrer les données pendant jacoco.exec, je devrais utiliser CATALINA_OPTS et non JAVA_OPTS.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X