如果 ServletContextListener 在 web.xml 檔或 web-fragment.xml 檔中未宣告,或是未以 @WebListener 標註,Servlet 3.1 規格中的澄清現在不容許 ServletContextListener 介面實作者,以程式設計方式配置 Servlet、過濾器或接聽器。因此,為執行此類程式化配置而對 ServletContext 介面進行的任何呼叫,皆會導致 UnsupportedOperationException。此規則會標示下列類別:實作 javax.servlet.ServletContextListener 介面,且在 web.xml 或 web-fragment.xml 檔中既未以 @WebListener 標註,又未定義為 listener-class。
下列方法會擲出 UnsupportedOperationException:
- addFilter(String,Class)
- addFilter(String,Filter)
- addFilter(String,String)
- addListener(Class)
- addListener(String)
- addListener(T)
- addServlet(String,Class)
- addServlet(String,Servlet)
- addServlet(String,String)
- createFilter(Class)
- createListener(class)
- createServlet(Class)
- declareRoles(String.....)
- getClassLoader()
- getDefaultSessionTrackingModes()
- getEffectiveSessionTrackingModes()
- getEffectiveMinorVersion()
- getEffectiveMajorVersion()
- getFilterRegistrations()
- getFilterRegistration(String)
- getJSPConfigDescriptor()
- getServletRegistration(String)
- getServletRegistrations()
- getSessionCookieConfig()
- getVirualServerName()
- setInitParameter()
- setSessionTrackingModes(Set<SessionTrackingMode>)
如需這些方法的相關資訊,請參閱
介面 ServletContext。
如需 Servlet 3.1 行為變更的相關資訊,請參閱下列資源:
Servlet 3.1 行為變更。