在Tomcat中清除Grails应用程序的取消部署

时间:2017-03-09 13:09:42

标签: tomcat grails profiling classloader

每次我重新部署一个应用程序时,由于一个名为Timer-0的阻塞线程由hibernate启动,所以我保留旧的webclassloader。 我尝试使用YourKit分析堆转储,但仍然加载了几个thousend类,我很难弄清楚什么阻止了类加载器。

这给我留下了几个问题:

  • 如何找到类加载器无法卸载的原因?

  • 是否有最佳做法确保在不重新启动容器的情况下完全卸载所有内容?

提前致谢!

更新

示例数据源:

dataSource {
    pooled = true
    driverClassName = "org.postgresql.Driver"
    dialect = "org.hibernate.dialect.PostgreSQLDialect"
    username = "xx"
    password = "xx"
    configClass = DdlFilterConfiguration
    properties {
        maxActive = 250
        maxIdle = 25
        minIdle = 1
        initialSize = 10
        maxWait = 10000
        validationQuery = "select 1 "
        validationQueryTimeout = 3
        validationInterval = 15000
        testOnReturn = true
        testWhileIdle = true
        testOnBorrow = true

        minEvictableIdleTimeMillis = 60000
        timeBetweenEvictionRunsMillis = 5000
    }
}

1 个答案:

答案 0 :(得分:0)

可能最好的方法是使用代理前端系统(Apache代理很好)。即使在同一台机器上也可以有两个Tomcat实例,但在不同的端口上可以说7001和8001.让我们假设您当前在端口7001上运行,您在8001上开始新部署,然后将您的代理重新命名为8001。