Tomcat7在Web应用程序关闭期间挂起

时间:2014-08-21 14:33:25

标签: hibernate tomcat7

我目前正在使用tomcat - 7.0.52
以下是tomcat挂起时的线程转储。在这个 pool-3-thread-1 是挂起的线程,但是我无法调试哪个应用程序代码正在启动它。 (如果按ctrl + c,它会关闭tomcat,但在使用shutdown.bat时挂起)

Tomcat Thread dump

1 个答案:

答案 0 :(得分:2)

问题与Hibernate(4.0)有关,因为hibernate无法关闭ConnectionProvider(org.hibernate.engine.jdbc.connections.spi.ConnectionProvider)。 手动关闭ConnectionProvider -


    try{
            SessionFactoryImpl sf = (SessionFactoryImpl)factory;
            ConnectionProvider cp = sf.getConnectionProvider();
            if (Stoppable.class.isInstance(cp)) {
                ((Stoppable) cp).stop();
            } 
        }catch(Exception e){
            LOGGER.error("unable to stop connectionProvider",e);
        }
        this.factory.close();
    }