2009-08-14 26 views
5

Có cách nào để bộ lọc servlet nhận danh sách tất cả các servlet và ánh xạ của chúng không?Làm thế nào để bạn quan sát web.xml từ một servlet?

+1

Không sử dụng API chuẩn. Các thùng chứa cụ thể có thể cho phép bạn làm điều đó, nhưng điều đó sẽ tùy thuộc vào vùng chứa của bạn. – skaffman

+0

Kỳ lạ của nó là đã từng là API cho những thứ như thế này, nhưng đã bị loại bỏ. – jsight

Trả lời

4

Không có API chuẩn (nữa; và những gì ở đó là khá hạn chế) - nhưng đó là tệp XML có lược đồ chuẩn. Bạn có thể lấy nó trong bộ lọc của mình qua:

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

và nhận những gì bạn muốn từ bộ lọc bằng SAX/DOM/XPath/bạn có gì, ví dụ:

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

Điều này rơi xuống một chút trong EE6, nơi các servlet có thể được định nghĩa bằng các chú thích và bởi các tệp web-fragment.xml. Cách tiếp cận tương tự có thể được sử dụng trên những người, mặc dù; nó chỉ là vấn đề đơn giản của lập trình. –

Các vấn đề liên quan