1

在 Servlet 3.0 中,应用程序的ServletContainerInitializer实现(如果有)在应用程序第一次 BEGINS 启动时被调用,并且任何ServletContextListeners(如果有)在不久之后被调用,但仍然因为上下文是 BEGINNING 初始化。同样,如果您有任何Servlet设置了 load-on-startup 的 s,它们的init方法在Servlets 启动时被调用,但仍然在上下文完成初始化之前。

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

是否有可能做到这一点?不必严格地是 Servlet 规范提供的方法。可能是 Spring Framework 或其他执行此任务的库。

4

1 回答 1

0

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

public void observeServletContextInitialized(@Observes @Initialized ServletContext ctx) 
{
    System.out.println(ctx.getServletContextName() + " initialized");
}
于 2013-09-20T04:39:04.380 回答