Servlet 3.1 仕様では、ServletContextListener が web.xml ファイルまたは web-fragment.xml ファイル内に宣言されず、
@WebListener アノテーションも付けられていない場合、ServletContextListener インターフェースの実装者は、サーブレット、フィルター、またはリスナーをプログラマチックに構成することは許可されないということが明確にされました。結果として、
そういったプログラマチックな構成を実行する ServletContext インターフェースでの呼び出しは、
UnsupportedOperationException という結果になります。この規則により、javax.servlet.ServletContextListener インターフェースを実装していて、かつ、
@WebListener アノテーションが付いておらず、web.xml ファイルまたは web-fragment.xml 内で 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>)
これらのメソッドについて詳しくは、
Interface ServletContext を参照してください。
Servlet 3.1 での振る舞いの変更について詳しくは、
Servlet 3.1 での振る舞いの変更のリソースを参照してください。