我需要刪除Tomcat啓動時的臨時文件,傳遞給包含臨時文件的文件夾位於applicationContext.xml中。有沒有辦法只在Tomcat/Wildfly/Glassfish啓動時運行方法/類?
有沒有辦法只在Tomcat啓動時運行方法/類?
我需要刪除Tomcat啓動時的臨時文件,傳遞給包含臨時文件的文件夾位於applicationContext.xml中。有沒有辦法只在Tomcat/Wildfly/Glassfish啓動時運行方法/類?
有沒有辦法只在Tomcat啓動時運行方法/類?
你可以寫一個ServletContextListener
從contextInitialized()
方法調用你的方法。您將偵聽程序附加到web.xml中的web應用程序,例如
<listener>
<listener-class>my.Listener</listener-class>
</listener>
和
package my;
public class Listener implements javax.servlet.ServletContextListener {
public void contextInitialized(ServletContext context) {
MyOtherClass.callMe();
}
}
嚴格地說,這只是在web應用程序啓動時運行一次,而不是Tomcat啓動,但可以達到同樣的事情。
這也可以通過Java servlet容器移植。我認爲最好的方法。 此處列出了其他選項 - http://blog.eisele.net/2010/12/seven-ways-to-get-things-started-java.html – mikato 2014-06-18 15:25:06
@skaffman但在eclipse中的tomcat服務器啓動時contextInitialized( )函數正在調用,但MyClass.INSTANCE未調用.MyClass是一個枚舉類,它創建一次INSTANCE.Tomcat無法啓動。代碼是public void contextInitialized(ServletContextEvent contextEvent){ \t MongoDBClass.INSTANCE.getSomeDB()。getCollection(「UserDB」); \t context = contextEvent.getServletContext(); \t MongoDBClass.INSTANCE.getSomeDB()。getCollection(「UserDB」); \t \t \t}` – Vicky 2015-05-06 06:57:25
我確定在容器生命週期中必須有更好的方法來做它(編輯:漢克有答案 - 我想知道他爲什麼在我回答之前建議SessonListener
),但是您可以創建一個Servlet的其中有沒有其他的目的,當服務器啓動,而不是執行一次性行動:
<servlet>
<description>Does stuff on container startup</description>
<display-name>StartupServlet</display-name>
<servlet-name>StartupServlet</servlet-name>
<servlet-class>com.foo.bar.servlets.StartupServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
在Servlet 2.4之前(或者它是2.3?),人們就是這麼做的。但是通過添加上下文監聽器,這不再是必要的。 – skaffman 2008-10-01 20:56:24
您也可以使用(開始Servlet的V3)帶註釋的形式給出(不需要任何補充的web.xml):
@WebListener
public class InitializeListner implements ServletContextListener {
@Override
public final void contextInitialized(final ServletContextEvent sce) {
}
@Override
public final void contextDestroyed(final ServletContextEvent sce) {
}
}
更新:我有一個臨時故障 - 你應該使用[ContextListene r](http://www.docjar.com/docs/api/listeners/ContextListener.html),而不是`SessionListener`。 – 2008-10-01 15:59:51