2013-11-15 156 views
0

我在Simple java類中實現了一個ServletContextListener。現在在這裏我調用了一個方法,只要ContextInitialized的ServletContextListener運行就立即執行。調用方法的本質是它是複雜的,需要很長時間來執行。 只有所謂的index.jsp一個網頁,這是一個需要儘快顯示在瀏覽器運行Web應用程序的歡迎頁面,但是這並不顯示爲第一次調用方法執行,它需要很長時間才能執行..ServletContextListener正在停止在Apache Tomcat上部署Web應用程序

我需要歡迎頁面顯示和調用的ServletContextListener在後臺執行功能..

這裏是我的ServletContextListener類..

public class Startup implements ServletContextListener 
{ 
@Override 
public void contextDestroyed(ServletContextEvent sce) {} 

@Override 
public void contextInitialized(ServletContextEvent sce) 
{ 
    // Do your startup work here 
    executeprocess(); 
} 

} 

,這裏是我的web.xml文件..

<welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 
<listener> 
    <listener-class>org.myapp.Startup</listener-class> 
</listener> 

請幫幫我。 在此先感謝..

+0

你爲什麼不委派一個單獨的線程操作? –

+0

@Kal是不是可以用這種方式.. – Adi

+1

你到底是什麼問題呢?你能提供更多細節嗎? –

回答

6

嘗試增加線程如下:

@Override public void contextInitialized(ServletContextEvent sce) { 
new Thread(new Runnable() { 
    @Override 
    public void run() { 
     executeprocess(); 
    } 
}).start();} 
+0

謝謝先生你的答案。我對上面的代碼有一個疑問,即添加上面的代碼片段第一個歡迎頁面將會啓動,然後executeprocess();將被稱爲..我對嗎? – Adi

2

contextInitialized方法將暫停部署,直到方法完成。

+0

然後如何實現解決上述問題 – Adi

+1

如果你真的想把它作爲部署,並且您不想等待該方法完成,那麼您必須使用線程。 –

+0

我懷疑tomcat是否每次重啓機器都會部署一個項目? – Adi

相關問題