У меня есть веб-приложение java, которое имеет очень строгие требования безопасности. при запуске он пытается настроить веб-контейнер, чтобы заставить его использовать идентификатор сеанса SSL, чтобы установить идентификатор сеанса http. Если в этой конфигурации это не удается, я хочу, чтобы приложение остановилось и не обработало запрос. Я могу использовать System.exit()
, как я делаю в примере ниже, но мне интересно, есть ли хороший способ сделать это, не убивая JVM. Кроме того, менеджер безопасности может получить в пути System.exit()
Как остановить выполнение Servlet WebApp из ContextListener?
Я использую Tomcat 7.
public class SessionTrackingModeListener implements ServletContextListener
{
@Override
public void contextInitialized(ServletContextEvent event)
{
try
{
ServletContext context = event.getServletContext();
EnumSet<SessionTrackingMode> modes = EnumSet.of(SessionTrackingMode.SSL);
context.setSessionTrackingModes(modes);
System.out.println("SSL based Session tracking enabled");
} catch (Exception e)
{
System.err.println("Unable to setup SSL based session tracking");
e.printStackTrace();
System.exit(1);
// Question How do I get the container to not start the app without using exit?
}
}
@Override
public void contextDestroyed(ServletContextEvent event)
{
}
}
только мое веб-приложение, у меня нет никаких запросов, направленных на веб-приложение вообще, поскольку внешний мир идет, приложение не должно отвечать на любые запросы, контейнер должен возвращать 404. – ams
Используете ли вы какую-либо фреймворк «В весеннем каркасе он обрабатывается по умолчанию, показывая 404 при возникновении ошибки при запуске. См. Это http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/mvc.html –
Приложение все еще начинается, и весна не знает о других слушателях контекста и ошибках, которые они могут бросить, поэтому он просто счастливо движется вперед. – ams