在我的Vaadin應用中,在我的servlet類中調用servletInitialized()
方法來啓動我的應用程序,我必須通過瀏覽器至少發出一次對web應用程序url的請求。Tomcat servlet直到第一次請求才會啓動
我正在使用Intellij IDEA,我正在使用IDEA的Tomcat Server
運行配置在本地tomcat實例中啓動我的web應用程序。
是否可以在部署war文件後立即啓動servlet,而無需發出請求?
在我的Vaadin應用中,在我的servlet類中調用servletInitialized()
方法來啓動我的應用程序,我必須通過瀏覽器至少發出一次對web應用程序url的請求。Tomcat servlet直到第一次請求才會啓動
我正在使用Intellij IDEA,我正在使用IDEA的Tomcat Server
運行配置在本地tomcat實例中啓動我的web應用程序。
是否可以在部署war文件後立即啓動servlet,而無需發出請求?
<servlet>
...
<load-on-startup>1</load-on-startup>
</servlet>
這會在請求到達服務器之前實例化一個在web.xml
中的servlet。
如果您在web.xml
已經有了這一套,並沒有看到這個問題的任何變化,嘗試,如果你正在使用您的開發機器上的分解版本使用標準.war
包進行部署。
雖然Crazy Ninja的accepted answer是正確的,但還有一個選擇。
ServletContextListener
Servlet規範定義了ServletContextListener
接口定義要被實例化一個類和調用:
你實現ServletContextListener
類調用。
一些Servlet容器在啓動時會自動初始化它們的上下文。所以你的初始化代碼放在這裏可能會在你的第一個用戶點擊服務器之前很久才執行只要您的容器選擇初始化您的Web應用程序(上下文),請放心,Servlet規範保證任何容器都可以運行並完成運行,您的上下文偵聽器會在之前處理對servlet /過濾器的第一個調用。
我剛剛發佈了Question/Answer對這個主題,Hook for my Vaadin web app starting and stopping?。請參閱該頁面以獲得更多討論。