2010-11-08 59 views
1

我有一個作爲我的應用程序的一部分捆綁的servlet。我希望能夠在應用程序上下文最終初始化之前配置Tomcat或Spring來在boostrap中加載這個servlet。在加載應用上下文之前啓動一個Servlet

我這樣做是因爲 - 我正在使用servlet在實際上下文被觸發前做一些初始環境檢查和文件加載。

有沒有人知道這樣做的好處?

我已經添加了像這樣的servlet定義;

<servlet> 
      <servlet-name>init-class</servlet-name> 
      <servlet-class>package.initClass</servlet-class> 
      <load-on-startup>0</load-on-startup> 
    </servlet> 

這隻在應用上下文完成加載後纔會被觸發。

+0

你指的是哪個appcontext?另一個servlet? – skaffman 2010-11-08 11:56:09

+0

我指的是Spring應用程序上下文,它包含我所有的bean連線。 – Bitmap 2010-11-08 11:59:08

+0

,你需要做什麼?什麼是不被解僱 - servlet的init()方法..? – Bozho 2010-11-08 12:04:49

回答

6

你需要這個初始化邏輯放到ServletContextListener而不是servlet和在web.xml聲明爲

<listener><listener-class>YourListenerClass</listener-class></listener> 

另外,如果你的Spring上下文是由ContextLoaderListener加載,你的監聽器應該先在web.xml之前聲明,因爲監聽器按聲明順序被解僱。

+0

像魅力一樣工作! – Bitmap 2010-11-08 12:27:47

+0

有沒有辦法在上下文初始化之前運行代碼? ServletContextListener有2個方法。在上下文被初始化後運行的contextInitialized方法和在上下文被銷燬後運行的contextDestroyed。我想要一個方法,在上下文參數初始化之後以及Spring偵聽器啓動之前運行。 – 2017-10-24 07:04:29

相關問題