2010-11-21 19 views

Respuesta

26

¿Cómo puedo encontrar el nombre del archivo?

Ya lo tienes. ¿Quizás quisiste encontrar la ubicación absoluta del archivo? Puedes usar ServletContext#getRealPath() para esto.

String relativeWARPath = "/META-INF/MANIFEST.MF"; 
String absoluteDiskPath = getServletContext().getRealPath(relativeWARPath); 
File file = new File(absoluteDiskPath); 
// ... 

O si desea obtener como InputStream directamente, utilice ServletContext#getResourceAsStream().

InputStream input = getServletContext().getResourceAsStream("/META-INF/MANIFEST.MF"); 
// ... 
+0

Gracias, esto es lo que estoy buscando ... Ahora tengo que averiguar cómo obtener 'ServletContext' en una clase que no sea un servlet en sí. Parece que tengo que registrar mi' ServletContextListener' personalizado en 'web .xml' .. ¿Cierto? – yegor256

+0

Simplemente pásalo como argumento de constructor o método. – BalusC

+0

¿Qué tal 'ServletContextListener'? ¿Voy por el camino correcto? – yegor256

0

Hay algunas maneras de hacerlo, y la respuesta elegida es sólo funciona cuando desea leer los archivos Manifiest en la capa Servlet/SpringMVC o cualquier capa a la que pueda acceder a ServletContext.

Sin embargo, si quiere leer un valor como "versión" incluso antes de que se inicie el Servlet, como durante la configuración de inicio de sesión u otra cosa, es posible que tenga que hacer una carga de clases antigua o una manipulación de archivo Manifest.

Encontré este repositorio github (no mío) e incluye 4 formas diferentes de leer información del archivo Manifest. Si su situación no es accesible para ServletContext, verifíquelos.

https://github.com/khmarbaise/version-examples

Cuestiones relacionadas