首页 文章

当关闭tomcat我遇到[commons-pool-EvictionTimer]但未能阻止它

提问于
浏览
3

服务器版本:Apache Tomcat / 8.0.26
服务器内置:2015年8月18日11:38:37 UTC
服务器号:8.0.26.0
操作系统名称:Linux
操作系统版本:2.6.32-642.3.1.el6.x86_64
架构:amd64
JVM版本:1.8.0_60-b27
JVM供应商:Oracle Corporation

我正在使用jedis版本:2.8.2(commons-pool2:2.4.2)当我关闭tomcat时,会有一些警告消息 .

13-Feb-2017 08:12:14.006 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [ROOT] appears to have started a thread named [commons-pool-EvictionTimer] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
java.lang.Object.wait(Native Method)
java.util.TimerThread.mainLoop(Timer.java:552)
java.util.TimerThread.run(Timer.java:505)

这是一些jedis .

...
@Bean(name = "jedisConnectionFactory", destroyMethod = "destroy")

public JedisConnectionFactory jedisConnectionFactory() throws IOException {
    final Properties redisConfig = PropertiesLoaderUtils.loadProperties(
                new PathMatchingResourcePatternResolver().getResource("classpath:redis.properties"));

    final JedisConnectionFactory result = new JedisConnectionFactory();
    result.setHostName(redisConfig.getProperty("redis.hostName"));
    result.setPort(Integer.parseInt(redisConfig.getProperty("redis.port")));
    result.setUsePool(Boolean.parseBoolean(redisConfig.getProperty("redis.pool.use")));
    result.setTimeout(Integer.parseInt(redisConfig.getProperty("redis.timeout")));
    result.setPoolConfig(createJedisPoolConfig(redisConfig));
    result.afterPropertiesSet();
    return result;
    }
...

我怎样才能解决这个问题?

1 回答

  • 0

    看起来像一个已知问题,请参阅https://github.com/xetorthio/jedis/issues/936 .

    显然,您不需要清理 JedisConnectionFactory 本身,而是需要在工厂帮助下创建的连接池 .

相关问题