2013-05-29 114 views
0

是否可以通過servlet-api替換ServletRegistration?如何刪除/替換ServletRegistration?

以下代碼只能爲給定的servlet名稱註冊新的Servlet,但是如果存在名稱的servlet,則它不執行任何操作。

ServletContext.addServlet("servletName", ServletClass.class); 

因此,我正在尋找一種可能性來替換註冊(其他ServletClass同名)或刪除一個名稱。

回答

0

在servlet上下文初始化過程中提供了添加servlet的工具。 鑑於it is impossible to add new servlets at runtime i.e. anytime after the Servlet Context is initialised,您應該在servlet上下文初始化過程中添加正確的servlet集合。

在添加一個帶有名稱的servlet並將其替換爲另一個servlet時,實際上沒有意義,所有這些都在servlet上下文初始化中進行。不是嗎? 你看到它的任何用例嗎?

@Balusc實際上提出了一種good alternative

a single controller servlet in combination with command pattern is much better suited. 
You could then add commands (actions) during runtime and intercept on it based on the request URI. 
+0

我們的用例是更改後的配置(servlet的行爲)進行測試。應用程序本身向ServletContextListener註冊servlet,(測試)子模塊應該覆蓋servlet實現。 (在servlet上下文初始化過程中) 但是好的,如果不可能的話,我們必須嘗試其他解決方案。 謝謝 – chuem