2009-08-14 11 views
5

Czy istnieje sposób na filtr serwletów, aby uzyskać listę wszystkich serwletów i ich odwzorowań?W jaki sposób introspekcja web.xml z serwletu?

+1

Nie używanie standardowego interfejsu API. Konkretne kontenery mogą Ci to umożliwić, ale to zależy od twojego kontenera. – skaffman

+0

To dziwne, że kiedyś istniały interfejsy API dla takich rzeczy, ale zostały usunięte. – jsight

Odpowiedz

4

Nie ma standardowego interfejsu API (już było, a co było dość ograniczone) - ale jest to plik XML ze standardowym schematem. Można go otrzymać w filtrze poprzez:

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

i dostać to, czego chcesz od niego przy użyciu SAX/DOM/XPath/co masz, na przykład

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

Spada to nieco w EE6, gdzie serwlety można definiować za pomocą adnotacji i plików web-fragment.xml. To samo podejście można jednak zastosować do tych; to tylko prosta sprawa programowania. –