Article updated on

Referenciar una carpeta en nuestra aplicación en Tomcat fuera del Despliegue

Puedes necesitar esto por las siguientes razones.

  1. No quieres que una carpeta se borre tras los despliegues.
  2. Quieres que tu archivo WAR sea lo más ligero posible.
  3. Necesitas referenciar una carpeta de contenido estático, xml, logs, imágenes, etc en la url de tu aplicación.

Para hacer esto deber añadir la propiedad de contexto  docBase en tu server.xml file called , ej:

       <Context docBase="/ruta/a/mis/archivos" path="/MY-APP/files"/>

 

El archivo servers.xml está en el la carpeta conf just debajo del la carpeta donde hayamos instalado el tomcat- ej. tomcat6.0/conf o si estamos usando un IDE como eclipse debemos ir al directorio donde esta la configuración del servidor normalmente está en el mismo workspace con el nombre Servers (en eclipse)

Ejemplo de configuración cambiando el server.xml de un workspace de eclipse IDE. La aplicación se llama MY-APP.

       <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" 
directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log." 
suffix=".txt"/>
        
        <Context docBase="/home/ubuntu/content/" path="/MY-APP/img"/>
        <!-- all the files in folder are linked to MY-APP/img  -->
        <Context docBase="MY-APP" path="/MY-APP" reloadable="true" source="org.eclipse.jst.jee.server:MY-APP"/>
      </Host>

 

En este ejemplo, como tengo el servidor configurado en el puerto 8080 ya puedo ver la imágen que tengo en la carpeta /home/ubuntu/content/myimage.gif desde la url http://localhost:8080/MY-APP/img/myimage.gif

* Reiniciar el tomcat para que tengan efecto los cambios.

* Modifica el ejemplo según lo necesites.