jueves, 4 de junio de 2009

Configurar la página por defecto de Tomcat y de una aplicación web

   Cuando instalamos tomcat y lo arrancamos sin cambiar la configuración por defecto, la página principal que vemos cuando nos conectamos a http://localhost:8080 es la típica que muestra que el servidor se ha configurado correctamente:
If you're seeing this page via a web browser, it means you've setup Tomcat successfully. Congratulations!


   Para nuestras pruebas en casa no hay problema en escribir una url como http://localhost:8080/Mufly-0.2.1/MuflyMain.html, que es justamente la url principal de Mufly, pero si queremos darle un aspecto más profesional y amigable para el usuario hay que evitar el tener que teclear todo eso. Para ello debemos configurar dos opciones.

Cambiar la página inicial del tomcat para que cargue un contexto determinado
   La respuesta la tenemos en las FAQ de Tomcat aunque un poco escondida. Ahí nos indican que en $TOMCAT_HOME/etc/web.xml se encuentra una lista con los archivos que cargará el servidor en caso de que existan y el orden en que lo hará.
El primer paso por tanto es renombrar o eliminar los archivos index.html, index.htm e index.jpg. Y posteriormente crear un archivo estático index.html con el contenido que nos indican, en mi caso sería:
<html>
<head>
<meta http-equiv="refresh" content="0;URL=Mufly-0.2.1/">
</head>
<body>
</body>
</html>
   Con esto conseguimos que escribiendo en el navegador la url http://localhost:8080, el servidor Tomcat nos redireccione automáticamente a http://localhost:8080/Mufly-0.2.1/. Pero aún así no es suficiente.

Definir la página por defecto de un contexto
   Cuando se carga un contexto tenemos que indicar explícitamente la página que queremos cargar. En la mayoría de las ocasiones el usuario no la conoce, y tampoco tiene que hacerlo. La solución pasa por configurar en el archivo web.xml del contexto la página por defecto. En mi caso el archivo es $TOMCAT_HOME/webapps/Mufly-0.2.1/WEB-INF/web.xml y simplemente he añadido lo siguiente:
<welcome-file-list>
<welcome-file>MuflyMain.html</welcome-file>
</welcome-file-list>

   En teoría con esto ya está configurado, simplemente reiniciamos el servidor y debería funcionar pero en mi caso no funcionaba. Las redirecciones o no funcionaban bien o no cargaban la página que yo quería. Me acordé de cuando trabajaba con tomcat hace un par de años, que cada vez que subíamos un .war o hacíamos algún cambio similar había que borrar el directorio de trabajo porque sino los archivos no se desplegaban correctamente ni se leían los cambios. Así que dicho y hecho:
ivan@doraemon:~/apache-tomcat-6.0.18/bin$ ./catalina.sh stop
Using CATALINA_BASE: /home/ivan/apache-tomcat-6.0.18
Using CATALINA_HOME: /home/ivan/apache-tomcat-6.0.18
Using CATALINA_TMPDIR: /home/ivan/apache-tomcat-6.0.18/temp
Using JRE_HOME: /usr

ivan@doraemon:~/apache-tomcat-6.0.18/bin$ cd ..
ivan@doraemon:~/apache-tomcat-6.0.18$ cd work
ivan@doraemon:~/apache-tomcat-6.0.18/work$ rm -rf *
ivan@doraemon:~/apache-tomcat-6.0.18/work$ cd ..

ivan@doraemon:~/apache-tomcat-6.0.18$ cd bin
ivan@doraemon:~/apache-tomcat-6.0.18/bin$ ./catalina.sh start
Using CATALINA_BASE: /home/ivan/apache-tomcat-6.0.18
Using CATALINA_HOME: /home/ivan/apache-tomcat-6.0.18
Using CATALINA_TMPDIR: /home/ivan/apache-tomcat-6.0.18/temp
Using JRE_HOME: /usr
   Y ahora ya sí, simplemente poniendo en la url del navegador http://localhost:8080 llegamos a la página principal de la aplicación.

8 comentarios:

Anónimo dijo...

perfecto me a funcionado

Iván dijo...

Me alegro de que te haya sido útil :-)

Saludos, Iván.

Anónimo dijo...

Muchas gracias =D, me sirvio mucho tu post
Atte. @Borixca

Iván dijo...

Gracias a ti por compartirlo :-)

Anónimo dijo...

Hola Ivan muchas gracias me ha funcionado, nada mas que ocupo agregar otra pagina para agregarla a la redireccion que sintaxis utilizo?

Iván dijo...

¿Quieres decir que quieres redireccionar a otra página distinta?

Fco dijo...

Gracias Iván por compartir tu conocimiento,.
ahora para evitar colocar el puerto 8080 en la barra de direcciones? localhost:8080

Prueba dijo...

Donde es que tengo que crear el archivo html?, cual sería la carpeta principal, webapps, conf, docs.

Donde?

Publicar un comentario