2
Serverのバージョンを停止に失敗しました:Apache Tomcatの/ 8.0.26
サーバーが構築された:2015年8月18日の11時38分37秒UTC
サーバーの数: 8.0.26.0
OS名:Linuxの
OSバージョン:2.6.32-642.3.1.el6.x86_64
アーキテクチャ:AMD64
JVMのバージョン:1.8.0_60-B27
JVMベンダー:オラクル・コーポレーション
は[コモンズ・プールが-EvictionTimer]それに
私は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;
}
...
これはどのように修正できますか?
私はこれまで同様の問題に直面していました。当時の問題は、リソースが正しくクリーンアップされていないことでした。これを解決するには、 'ServletContextListener'を登録します。 –
ありがとうございます。私はjedisConnectionFactory.destroy()を呼び出してServletContextListenerをクリーンアップしようとします。クリーンアップまたは登録する方法はありますか? – cmk1105