2013-03-18 62 views
1

在Servlet 3.0中,应用程序的第一个BEGINS开始和任何ServletContextListener(如果有)在调用之后立即调用应用程序的ServletContainerInitializer实现(如果有),但仍然是上下文为BEGINNING初始化。同样,如果您有任何Servlet s启动时启动时设置,它们的init方法将被调用,因为Servlet正在启动,但仍然在上下文完成初始化之前。ServletContext初始化之后可能通知监听器?

在所有这些情况下,上下文尚未完成初始化。这很好,我理解并同意其中的原因。然而,我正在寻找的是一种在上下文完成初始化并开始营业后立即得到通知的方法。作为一个例子,它应该是可能的(不是说我想这样做),这个监听器可以对它驻留的应用程序执行一个web请求。对于上面提到的任何监听器/初始化器来说,这是不可能的,因为它们在应用程序正在侦听请求之前被调用。

可以做到这一点吗?不必严格遵循Servlet规范提供的方法。可能是Spring框架或其他执行此任务的库。

回答

0

你可以使用JBoss Seam他们有servlet生命周期事件@Initialized

public void observeServletContextInitialized(@Observes @Initialized ServletContext ctx) 
{ 
    System.out.println(ctx.getServletContextName() + " initialized"); 
}