2009-08-14 10 views
5

¿Hay alguna manera para que un filtro de servlet obtenga una lista de todos los servlets y sus asignaciones?¿Cómo introspedes web.xml de un servlet?

+1

No utiliza la API estándar. Los contenedores específicos pueden permitirte hacerlo, pero eso dependerá de tu contenedor. – skaffman

+0

Es extraño que solía haber API para cosas como esta, pero se descartaron. – jsight

Respuesta

4

No hay una API estándar (más, y lo que allí era bastante limitado), pero es un archivo XML con un esquema estándar. Puede obtenerlo en el filtro a través de:

filterConfig.getServletContext().getResource("/WEB-INF/web.xml"); 

y conseguir lo que quiere de él usando SAX/DOM/XPath/lo que sea, por ejemplo,

InputStream is = filterConfig.getServletContext() 
    .getResourceAsStream("/WEB-INF/web.xml"); 
DocumentBuilder builder = DocumentBuilderFactory.newInstance() 
    .newDocumentBuilder(); 
Document document = builder.parse(is); 
NodeList servlets = document.getElementsByTagName("servlet"); 
+0

Esto se reduce un poco en EE6, donde los servlets se pueden definir mediante anotaciones y mediante archivos web-fragment.xml. Sin embargo, el mismo enfoque se puede usar con eso; es simplemente una simple cuestión de programación. –

Cuestiones relacionadas