linux下tomcat关闭后还有进程

今天发现的问题,记录一下:

修改了程序,eclipse中运行一切正常,部署到linux,重启tomcat发现,运行出现不少错误,看似之前的版本引起的,刚开始以为是tomcat缓存,然后清空了work下的Catalina还是一样。。重新部署重启了多次都无效!

折腾许久,突然想起来查看下tomcat进程,ps -ef | grep tomcat 发现一大堆tomcat运行的进程,我晕,才发现之前一直使用./shutdown 关闭了tomcat,进程其实还在。

在网上找了很多原因,还以为是tomcat需要作什么配置,其实都不是..最终找到问题原因:

原来是程序使用Quartz定时任务,只在监听器中初始化时启动了schedule,但是没写停止的程序,导致即使tomcat关闭了这个进程一直不会关闭。

所以需要在Listener中销毁上下文的时候关闭一下:

/**
     * @see ServletContextListener#contextDestroyed(ServletContextEvent)
     */
    public void contextDestroyed(ServletContextEvent sce) {
        // TODO Auto-generated method stub
        try {
            if (scheduler !=null && scheduler.isStarted()) {
                scheduler.shutdown();
            }
        } catch (SchedulerException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

然后测试,重启tomcat然后shutdown,再次查看进程,OK! 没了。

posted on 2017-07-11 11:45  耐旺旺  阅读(705)  评论(0编辑  收藏  举报

导航