在Servlet 3.0中,当应用程序第一次BEGINS启动时调用应用程序的ServletContainerInitializer
实现(如果有的话),并且很快就会调用任何ServletContextListener
s(如果有的话),但仍然是上下文BEGINNING初始化。同样,如果您有任何带有load-on-startup设置的Servlet
,则init
方法会在Servlet
启动时调用,但仍然在上下文完成初始化之前。< / p>
在所有这些情况下,上下文尚未完成初始化。这很好,我理解并同意其原因。然而,我正在寻找的是一种在上下文完成初始化并立即开始营业后立即得到通知的方法。作为一个例子,应该可以(不是说我想这样做)为这个类的侦听器执行对它所驻留的应用程序的Web请求。对于任何上述提到的侦听器/初始化器,这是不可能的,因为在应用程序监听请求之前调用它们。
有可能这样做吗?不必严格地是Servlet规范提供的方法。可能是Spring Framework或其他执行此任务的库。
答案 0 :(得分:0)
您可以使用JBoss Seam他们有servlet生命周期事件@Initialized。
public void observeServletContextInitialized(@Observes @Initialized ServletContext ctx)
{
System.out.println(ctx.getServletContextName() + " initialized");
}