Toda aplicación en Tomcat se encuentra agrupada en WARS ("Web-Archives"), la estructura de un WAR es definida por Sun (el creador de Java) la cual debe ser implementada en cualquier producto de "Servlet Engine"(Web-Container).
Cuando recién se instala "Tomcat" éste ya contiene varios WARS, los cuales contienen ejemplos y documentación, estos WARS se encuentran bajo el directorio /usr/local/tomcat/webapps
, donde /usr/local/tomcat
es el directorio raíz de Tomcat (TOMCAT_HOME
) definido al
instalar Tomcat
Si se desciende a este directorio se observará que además de los archivos *.war
existe además un directorio con el mismo nombre del WAR, esto es, si existen WAR's por nombre ROOT.war
y examples.war
también existen directorios llamados ROOT
y examples
.
Estos directorios son los que precisamente contienen la estructura del archivo WAR, esto es, el archivo WAR en sí no es legible sino que tiene que ser expandido/descomprimido para ser leído.
La estructura de un Archivo WAR es la siguiente:
/ *.html *.jsp *.css : Este directorio base contiene los elementos que comúnmente son utilizados en un sitio, Documentos en HTML , JSP's , CSS("Cascading Style Sheets") y otros elementos.
/WEB-INF/web.xml : Contiene elementos de seguridad de la aplicación así como detalles sobre los Servlets que serán utilizados dentro de la misma.
/WEB-INF/classes/ : Contiene las clases Java adicionales a las del JDK que serán empleadas en los JSP's y Servlets
/WEB-INF/lib/ : Contiene los JAR's que serán utilizados por su aplicación.
Este tipo de estructura permite portabilidad a las diversas aplicaciones que son desarrolladas en Java, esto es , si se genera una aplicación para Foros o
transacciones financieras
estas se pueden contener en un archivo WAR, concentrando cualquier clase Java dentro de /WEB-INF/classes
, parámetros específicos en /WEB-INF/web.xml
, archivos
JAR's
en /WEB-INF/lib/
y los diversos JSP's,CSS y documentos HTML bajo el directorio raíz del archivo WAR.
Después de explorar la estructura de un WAR, seguramente se hará la pregunta: Como se lleva esta aplicación a los usuarios finales en Internet ?
Los siguientes pasos describen como interactúa "Tomcat" con WARS, tome en cuenta que este proceso muy probablemente difiera de otros "Servlet Engines(Web-Containers)" como ServletExec y los diversos "Java Application Servers" en el mercado.
Cuando se lleva acabo la ejecución de Tomcat éste inspecciona y automáticamente expande cualquier archivo WAR que se encuentra bajo el directorio webapps
, si observa a detalle los registros ("Logs") de Tomcat notará algunas lineas como las siguientes:
2003-12-13 02:55:13 - ContextManager: Adding context Ctx( /examples ) 2003-12-13 02:55:13 - ContextManager: Adding context Ctx( /admin ) 2003-12-13 02:55:13 - ContextManager: Adding context Ctx( ) <--- WAR ROOT 2001-12-13 02:55:13 - ContextManager: Adding context Ctx( /test ) |
Estas lineas indican que han sido expandidos 4 WARS con nombres examples
,admin
,test
y uno llamado ROOT
, esta expansión genera un directorio llamado de la misma manera que el archivo WAR.
Una vez creados estos directorios (expandidos de WARS) Tomcat toma la información solicitada al sitio de estos directorios, lo anterior significa que si su sitio se llama www.apservidor.com
y un usuario intenta visitar su página principal le aparecerá el archivo que se encuentra en el directorio ROOT
, si se intenta visitar www.apservidor.com/admin
aparecerá el archivo inicial del directorio admin
y así sucesivamente.
Lo anterior generalmente ofrece el comportamiento deseado, siendo que se expande el WAR de acuerdo a su nombre, si se incluye un WAR llamado foros este será accesible del directorio llamado foros
del sitio (www.apservidor.com/foros
) , sin embargo , existen ocasiones en las que es conveniente permitir acceso a cierto WAR bajo otro directorio diferente a su nombre.
Si tiene un WAR llamado registro.war
es posible que desee sea utilizado/accesible en varios lugares de un sitio y no necesariamente bajo www.apservidor.com/registro
, esta variación se logra modificando el parámetro
Context
de server.xml
.
Finalmente cabe mencionar las maneras en que pueden ser creados los archivos WARS, existen varias, a continuación se mencionan las más comunes:
Vía "IDE" : A través de un IDE ("Integrated Development Environment") es posible generar estos archivos WAR's, con este tipo de herramienta la creación depende fuertemente del tipo de IDE utilizado.
Mediante Ant : "Ant" es una herramienta Open-Source , la cual facilita la construcción de aplicaciones en Java, "Ant" no es considerado un IDE (inclusive en ocasiones se utiliza en conjunción con un IDE), sin embargo, facilita la creación de aplicaciones Java; si conoce un poco de Linux "Ant" es considerado el make de Java.
Finalmente recuerde que la creación de WAR'S no es obligatoria sino solo una manera de transferir y modularizar aplicaciones, si coloca la estructura de un WAR bajo el directorio webapps
en Tomcat esto funcionará de la misma manera que si hubiera sido descomprimido/expandido el archivo WAR.