Cambiar versión de Java usada por Tomcat

Cuando instalamos Tomcat, el JDK (Java Development Kit) utilizado puede no ser el que necesitemos para nuestra aplicación. Por ejemplo, en una instalación estándar de RHEL o CentOS el JDK de Java será OpenJDK, versión 6,7,8… si queremos configurar Tomcat para que use una versión concreta de OpenJDK o incluso el JDK de Oracle necesitaremos realizar un pequeño cambio en nuestra configuración del servidor de aplicaciones.

Lo primero es instalar la versión de Java JDK que queramos utilizar para la JVM de Tomcat. Por ejemplo, si quisieramos utilizar la JDK de Oracle la bajaríamos e instalaríamos del siguiente modo:

# mkdir /opt/java
# cd /opt/java
# wget http://download.oracle.com/otn/java/jdk/6u30-b12/jre-6u30-linux-x64.bin
# ./jre-6u30-linux-x64.bin

Si quisiéramos utilizar otra versión distinta pero manteniendo OpenJDK, la podemos instalar por yum o apt:

# yum install java-1.7.0-openjdk

A la hora de configurar la versión de JDK en Tomcat no es necesario hacer esta nueva versión la principal del sistema, podemos especificarla sólo para la JVM de Tomcat. El único cambio que debemos hacer es apuntar la variable de entorno JAVA_HOME (y JRE_HOME se está definida) a esta nueva versión. En instalaciones RHEL y CentOS se especifica en el archivo de configuración /etc/tomcat/tomcat.conf (o /etc/sysconfig/tomcat*), en caso contrario suele estar en el archivo catalina.sh (*nix) y catalina.bat/setenv.bat (windows).

/etc/tomcat/tomcat.conf

Modificamos la variable de entorno:

# Where your java installation lives
#JAVA_HOME="/usr/lib/jvm/jre"
JAVA_HOME="/opt/java/jre1.6.0_30"

Para aplicar el cambio, reiniciamos tomcat y ya deberíamos visualizar como se está ejecutando con la nueva versión de Java:

# ps -ef | grep tomcat
tomcat    1807     1 20 04:28 ?        00:08:06 /opt/java/jre1.6.0_30/bin/java...
[...]