Múltiples Host en Tomcat
Muchas veces nos interesa que el nombre del contexto (Aplicación Web para Tomcat) no aparezca en nuestra Url a la hora de mostrar la aplicación.
Una solución rápida y funcional es sustituir el contexto ROOT de la instalación de Tomcat por nuestra aplicación pero existen varios inconvenientes:
- Se pierde la aplicación Manager del Tomcat.
- Si en un futuro se quiere añadir otra aplicación cuyo nombre no se mostrará en la url, deberéis buscar otra solución.
Imaginemos que tenemos una aplicación Web (con 2 idiomas) J2EE bajo Tomcat definida en el Apache de la siguiente manera:
<VirtualHost localhost>
AddDefaultCharset UTF-8
DocumentRoot /apps/www/aplicacion
ServerName www.aplicacion.es
ServerAlias www.aplicacion.fr
JkMount /* local
TransferLog “C:/apps/logs/access.log”
ErrorLog “C:/apps/logs/error.log”
</VirtualHost>
Como se puede observar existen, como he comentado anteriormente, 2 idiomas (español, francés), mediante el conector mod_jk (JkMount), conectaremos el servidor Apache y Tomcat.
En Tomcat únicamente tendremos una única aplicación:
<TOMCAT_HOME>/webapps/miaplicacion
¿Cómo hacer que los dos dominios, www.aplicacion.fr y www.aplicacion.es apunten al mismo contexto y ocultar su nombre en la url?
Si no se hiciese nada, una de las formas seria, como se ha comentado antes, poner nuestra aplicación bajo el contexto ROOT, pero si más adelante quisiésemos ocultar, en la url, el nombre del contexto de otra aplicación tendríamos un problema.
Para solucionarlo debemos configurar el server.xml (ubicado en: <TOMCAT_HOME>/conf) de la siguiente manera:
<Host name=”localhost” debug=”0″ appBase=”webapps” unpackWARs=”true”>
<Context path=”" docBase=”<TOMCAT_HOME>/webapps/ROOT” debug=”0″ reloadable=”true” />
</Host>
<Host name=”www.aplicacion.es” debug=”0″ appBase=”webapps” unpackWARs=”true”>
<Alias>www.aplicacion.fr</Alias> /* Podemos añadir tantos alias o aplicaciones web queramos */
<Alias>…</Alias>
…
<Alias>…</Alias>
<Context path=”" docBase=”<TOMCAT_HOME>/webapps/miaplicacion” debug=”0″ reloadable=”true” />
</Host>
De esta forma estamos diciendo al Tomcat que existen 2 dominios pero ambos están compartiendo el mismo contexto, por tanto, el mismo código, y además el contexto ROOT se mantiene operativo. Aunque es aconsejable no mantenerlo en servidor de producción.
Por último tu fichero de host debería contener algo como:
127.0.0.1 www.aplicacion.es
127.0.0.1 www.aplicacion.fr





Deja tu comentario