2
Server 버전을 중지 실패했습니다 아파치 톰캣/8.0.26
서버 내장 : 2015년 8월 18일을 세계 협정시 11시 38분 37초
서버 번호 : 8.0.26.0
OS 이름 : 리눅스
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의 일부 conf입니다.
...
@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'를 등록하여 해결했습니다. –
답장을 보내 주셔서 감사합니다. 나는 ServletContextListener에서 jedisConnectionFactory.destroy()를 호출하여 정리하려고한다. 정리하거나 등록 할 방법이 있습니까? – cmk1105