如何在 tomcat stop 之前执行一些java代码? 因为我在tomcat启动的时候启动了一个线程,这个线程一直保持运行,我想在tomcat 关闭之前,执行某些java代码,向线程发送停止命令。 因为如果不这样做,tomcat会强制关闭我的线程,这样的话,可能会出现一些意外的情况.

解决方案 »

  1.   

    你先看一下tomcat下service.xml里面监听关闭tomcat的端口号是多少,你也可以写个程序来监听这个端口,然后来执行关闭你的线程
      

  2.   


    能详细点吗? 不明白在说什么,listener是有什么用? 如何知道web程序被停止?
      

  3.   

    你是怎么在“tomcat启动的时候启动了一个线程”的呢?“在tomcat停止的时候做点事情”应该跟“在tomcat启动的时候做点事情”差不太远。
      

  4.   

    正确地说,应该是在web app 启动的时候启动一个线程, 很简单在web.xml中配置一下就可以了,网上有很多例子.  但是,我不知道是否可以设置在web 停止之前,执行某个java class.
      

  5.   

    实现一个ServletContextListenervoid contextDestroyed(ServletContextEvent sce) 
              Notification that the servlet context is about to be shut down. void contextInitialized(ServletContextEvent sce) 
              Notification that the web application initialization process is starting. 
      

  6.   

    理论上是可以的,就像关闭窗口时,对它进行监听就好了,可以分为关闭中、已关闭等等,但是,tomcat和这个还是不同的,因为,tomcat一关闭,服务都停止了,好像也做不了什么动作了吧
      

  7.   

    你在 web.xml 中配的那个东西,如果有 init() 的话,一般也会有个 destroy() 或者类似的东西。
      

  8.   

    写个类继承ServletContextListener方法
    ServletContextListener是监听容器的
    例如:
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;public class LifeCycleListener implements ServletContextListener{ public void contextInitialized(ServletContextEvent event) {
    //容器启动时执行的代码
    }
    public void contextDestroyed(ServletContextEvent event) {
    //容器关闭时时执行的代码
    }
    }
    但是非正常关闭(非stop();)容器是不会执行contextDestroyed 中代码的
      

  9.   


    顶17楼,写完这个类后,再在web.xml文件里配置一下。
    像这样
    <listener>
        <listener-class>
            xxx.xxx.LifeCycleListener
        </listener-class>
    </listener>
      

  10.   

    servlet的生命周期里面..  
    init() 
    service() 
    destory()在destory()里面执行点代码就可以了..
      

  11.   

    还需要在web.xml中配置<!-- 监听器配置 -->
        <listener>
            <listener-class>
                org.qpyong.emp.listen.BackListen
            </listener-class>
        </listener>
      

  12.   


    如果这样,我在哪里执行stop? 如果必须要执行stop,似乎实现不了我的要求,因为我永远不知道tomcat什么时候会关闭.