2013-03-18 61 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"); 
}