我需要删除Tomcat启动时的临时文件,传递给包含临时文件的文件夹位于applicationContext.xml中。

有没有办法只在Tomcat启动时运行方法/类?

有帮助吗?

解决方案

您可以编写 ServletContextListener ,它从 contextInitialized()方法调用您的方法。您将侦听器附加到web.xml中的webapp,例如

<listener>
   <listener-class>my.Listener</listener-class>
</listener>

package my;

public class Listener implements javax.servlet.ServletContextListener {

   public void contextInitialized(ServletContext context) {
      MyOtherClass.callMe();
   }
}

严格来说,这只是在webapp启动时运行一次,而不是Tomcat启动,但这可能相同。

其他提示

您还可以使用(启动Servlet v3)带注释的aproach(无需向web.xml添加任何内容):

   @WebListener
    public class InitializeListner implements ServletContextListener {

        @Override
        public final void contextInitialized(final ServletContextEvent sce) {

        }

        @Override
        public final void contextDestroyed(final ServletContextEvent sce) {

        }
    }

我确信必须有一个更好的方法来作为容器生命周期的一部分(编辑:Hank有答案 - 我想知道他为什么在我回答之前建议 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> 
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top