Breve de JSF: Obtener la ruta física del contexto de la aplicación web desde Java Server Faces

Este código puede servirnos por ejemplo en una ruta de descarga o carga de archivos.
La ruta física del contexto de la aplicación web o incluso de un directorio es posible obtenerla desde Java Server Faces.

Dentro de un Managed Bean puede ser en el constructor

public class MyManagedBean{

String realPath="";

public MyManagedBean{
 ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
 realPath=(String) servletContext.getRealPath("/"); // Sustituye "/" por el directorio ej: "/upload"
}

}

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de luxspes

Bueno saberlo, pero malo usarlo

Ciertamente es bueno saber que esto se puede hacer, pero hay que evitar usarlo para la ruta de descarga o carga de archivos.
Los archivos de carga y descarga siempre deberia subirse en una carpeta separada de la aplicacion, para evitar contaminar la carpeta de la aplicacion, con archivos que ademas nos arriesgamos a perder la proxima vez que hagamos un nuevo deployment de la aplicacion (es tan facil darle click en "undeply" o en "redeploy" y observar impotentes mientras nuestro servidor (Tomcat, u otro) borra la carpeta de la aplicacion y se lleva consigo a los archivos cargados por los usuarios.

Lo mejor es mantener limpio nuestro deployment, con exclusivamente los archivos que se requieren para que la aplicacion se ejecute y mantener cualquier archivo cargado posteriormente por el usuario en otra carpeta (o guardados en la base de datos)

Imagen de paranoid_android

Es una solución volátil,

Es una solución volátil, cada necesidad es diferente y debe tenerse criterio para usarla o no. En nuestro caso la utilizamos para un directorio de trabajo que no hay problema que se destruya con cada re-deploy.

Imagen de benek

Útil como directorio temporal

Así es, por ejemplo para cuando necesitas un directorio para crear archivos y luego subirlos para que el usuario lo descarge se me hace muy útil.

Para otros escenarios como histórico o almacén de archivos aplica muy bien la solución de luxspes.

Javier Ramírez Jr.