Если у вас есть ServletContainerInitializer
, в его методе onStartup()
, вы в основном будете делать то, что делает ваш контейнер, когда он анализирует ваш web.xml. Например:
@Override
public void onStartup(Set<Class<?>> classes, ServletContext ctx) throws ServletException {
ServletRegistration.Dynamic servlet = ctx.addServlet("myServlet", "com.package.myServlet"); // loop through classes set to find all your servlets
HttpConstraintElement constraint = new HttpConstraintElement(); // many constructors with options
ServletSecurityElement securityElement = new ServletSecurityElement(constraint); // many different constructors
servlet.setServletSecurity(securityElement);
}
Есть много вариантов в конструкторах я комментировал для всех видов конфигураций, даже через сервлет 3,0 security annotations. Я позволю тебе открыть их все.
Что касается добавления новых ограничений после инициализации Javadoc для setServletSecurity()
говорит:
* @throws IllegalStateException if the {@link ServletContext} from
* which this <code>ServletRegistration</code> was obtained has
* already been initialized
Я не мог найти что-нибудь для получения списка ограничений через ServletContext
интерфейс, но вы всегда можете разобрать web.xml сам.
Возможно, релевантно: https://blogs.oracle.com/swchan/entry/follow_up_on_servlet_3 и это: https://weblogs.java.net/blog/kumarjayanti/archive/2009/12/24/using-servletsecurity- annotation-javaee-6 –