我有一個java web應用程序,它有一個非常嚴格的安全要求。在啓動時,它會嘗試配置Web容器,強制它使用SSL會話標識來建立http會話標識。如果在此配置中失敗,我希望應用程序停止並不處理請求。我可以在下面的示例中使用System.exit()
,但我想知道是否有一種很好的方法可以在不殺死JVM的情況下執行此操作。另外安全管理器可以在System.exit()
如何停止從ContextListener執行Servlet WebApp?
礙事,我使用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
您是否使用任何框架?在Spring框架中,它在默認情況下處理,當啓動出現錯誤時顯示404。參見 http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/mvc.html –
該應用程序仍然開始,春天不知道其他上下文聽衆和他們可能拋出的錯誤,所以它只是愉快地移動。 – ams