2012-06-27 16 views
78

Estaba tratando de averiguar la diferencia entre las variables Apache Tomcat - CATALINA_OPTS y JAVA_OPTS en SO y me sorprende ver que todavía no hay ninguna pregunta/respuesta publicada. Así que pensé en compartirlo aquí (con respuesta) después de descubrir la diferencia. Verifique la respuesta/diferencia a continuación.CATALINA_OPTS vs JAVA_OPTS - ¿Cuál es la diferencia?

NOTA: En el momento de esta publicación, estamos ejecutando Apache Tomcat v6.0.10 con JDK 6u32 en CentOS5 de 64 bits.

Respuesta

116

Hay dos variables de entorno - CATALINA_OPTS y JAVA_OPTS - que se utilizan tanto en el inicio y finalización del script catalina.sh para Tomcat. Se describen en los comentarios dentro de ese archivo como:

[JAVA_OPTS]: (opcional) Opciones de tiempo de ejecución de Java utilizan cuando el "Inicio", "parada" o "run" se ejecuta comando

y

[CATALINA_OPTS]: opciones de tiempo de ejecución (opcional) Java utilizadas cuando el "inicio" o "correr" se ejecuta el comando

Entonces, ¿por qué hay dos variables diferentes? ¿Y cuál es la diferencia?

Primero, todo lo especificado en CUALQUIER variable se pasa, idénticamente, al comando que inicia Tomcat - el comando "inicio" o "ejecutar" - pero solo los valores establecidos en JAVA_OPTS se pasan al comando "detener". Eso probablemente no hace ninguna diferencia en cómo funciona Tomcat en la práctica, ya que solo afecta el final de una carrera, no el inicio.

La segunda diferencia es más sutil. Otras aplicaciones también pueden usar JAVA_OPTS, pero solo Tomcat usará CATALINA_OPTS. Entonces, si está configurando variables de entorno para usar solo con Tomcat, lo mejor sería que use CATALINA_OPTS, mientras que si está configurando variables de entorno para que las utilicen otras aplicaciones Java, como JBoss, debería poner su configuración en JAVA_OPTS.

Fuente:CATALINA_OPTS v JAVA_OPTS - What is the difference?

+3

También es útil pensar en ellos como "¿necesito algo para inicio de Tomcat" o "¿necesito algo para cada JVM". Digamos que estamos tratando de configurar el monitoreo JMX en un entorno distribuido y estamos detrás de un firewall; necesitaremos dos puertos RMI para configurar Djava.rmi.server como un * startup * arg. ¿Habríamos hecho esto como JAVA_OPT? El apagado desactiva una nueva JVM que intenta escuchar en puertos JMX, no puede tomarla porque Tomcat ya la está escuchando y la JVM se detendrá con un error de que ya está en uso, no lo que queremos es eso? –

+0

¡Muchas gracias! – Serzhas

Cuestiones relacionadas