commons-pool-evictor thread occasionally throws Error while closeredis.clients.jedis.exceptions.JedisException: Could not return the broken resource to the poolthis my config .the exception does not affect operation
@Configurationpublic class ShiroConfig implements EnvironmentAware{
@Beanpublic ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) { ShiroFilterFactoryBean factoryBean = new CustomShiroFilterFactoryBean(); factoryBean.setSecurityManager(securityManager()); factoryBean.setLoginUrl("/login"); factoryBean.setSuccessUrl("/index"); Map<String, String> filterChainDefinitionMap = new LinkedHashMap<String, String>(); filterChainDefinitionMap.put("/css/**", "anon"); filterChainDefinitionMap.put("/js/**", "anon"); filterChainDefinitionMap.put("/img/**", "anon"); filterChainDefinitionMap.put("/auth/login", "anon"); filterChainDefinitionMap.put("/*Controller/*", "user"); filterChainDefinitionMap.put("/index", "authc"); factoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); return factoryBean;}@Beanpublic MethodInvokingFactoryBean methodInvokingFactoryBean() { MethodInvokingFactoryBean bean = new MethodInvokingFactoryBean(); bean.setStaticMethod("org.apache.shiro.SecurityUtils.setSecurityManager"); bean.setArguments(securityManager()); return bean;}@Bean(name = "rememberAuthFilter")public RememberAuthenticationFilter rememberAuthenticationFilter() { RememberAuthenticationFilter filter = new RememberAuthenticationFilter(); filter.setUsernameParam("userName"); return filter;}@Beanpublic SimpleCookie rememberMeCookie(){ SimpleCookie simpleCookie = new SimpleCookie("rememberMe"); simpleCookie.setHttpOnly(true); simpleCookie.setPath("/"); simpleCookie.setMaxAge(2592000); return simpleCookie;}@Beanpublic CookieRememberMeManager rememberMeManager(){ CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager(); cookieRememberMeManager.setCookie(rememberMeCookie()); cookieRememberMeManager.setCipherKey(Base64.decode("*******")); return cookieRememberMeManager;}@Beanpublic FormAuthenticationFilter formAuthenticationFilter(){ FormAuthenticationFilter formAuthenticationFilter = new FormAuthenticationFilter(); formAuthenticationFilter.setRememberMeParam("rememberMe"); return formAuthenticationFilter;}@Beanpublic FilterRegistrationBean registrationBean() { FilterRegistrationBean filterRegistration = new FilterRegistrationBean(); filterRegistration.setFilter(new DelegatingFilterProxy("shiroFilter")); filterRegistration.addInitParameter("targetFilterLifecycle", "true"); filterRegistration.addUrlPatterns("/*"); filterRegistration.addUrlPatterns("/WEB-INF/jsp/*"); filterRegistration.addUrlPatterns("/login"); filterRegistration.addUrlPatterns("/index"); filterRegistration.addUrlPatterns("/logout"); return filterRegistration;}@Beanpublic SecurityManager securityManager() { DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); securityManager.setRealm(myShiroRealm()); securityManager.setCacheManager(cacheManager()); securityManager.setSessionManager(sessionManager()); return securityManager;}@Beanpublic CustomRealm myShiroRealm() { CustomRealm customRealm = new CustomRealm(); return customRealm;}public RedisCacheManager cacheManager() { RedisCacheManager redisCacheManager = new RedisCacheManager(); redisCacheManager.setRedisManager(redisManager()); return redisCacheManager;}public RedisManager redisManager() { RedisManager redisManager = new RedisManager(); Optional<String> hostOpt = Optional.ofNullable(environment.getProperty("spring.redis.host")); String host = hostOpt.orElse("localhost"); Optional<String> portOpt = Optional.ofNullable(environment.getProperty("spring.redis.port")); int port = Integer.parseInt(portOpt.orElse("6379")); Optional<String> timeoutOpt = Optional.ofNullable(environment.getProperty("spring.redis.timeout")); int timeout = Integer.parseInt(timeoutOpt.orElse("2000")); Optional<String> expireOpt = Optional.ofNullable(environment.getProperty("spring.redis.expire")); int expire = Integer.parseInt(expireOpt.orElse("2000")); Optional<String> passwordOpt=Optional.ofNullable(environment.getProperty("spring.redis.password")); String password = passwordOpt.orElse(""); redisManager.setHost(host); redisManager.setPort(port); redisManager.setExpire(expire); redisManager.setTimeout(timeout); if(password!=null&&!"".equals(password)){ redisManager.setPassword(password); } return redisManager;}@Beanpublic DefaultWebSessionManager sessionManager() { DefaultWebSessionManager sessionManager = new DefaultWebSessionManager(); sessionManager.setSessionDAO(redisSessionDAO());
sessionManager.setGlobalSessionTimeout(Long.valueOf(environment.getProperty("core.sessionMaxTimeout")));return sessionManager;}
@Beanpublic RedisSessionDAO redisSessionDAO() { RedisSessionDAO redisSessionDAO = new RedisSessionDAO(); redisSessionDAO.setRedisManager(redisManager()); Optional<String> property = Optional.ofNullable(environment.getProperty("server.servlet.context-path")); String context = property.orElse("/sso"); redisSessionDAO.setKeyPrefix("shiro:session:" + context.replace("/","") +":"); return redisSessionDAO;}@Beanpublic DefaultAdvisorAutoProxyCreator getDefaultAdvisorAutoProxyCreator() { DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator(); defaultAdvisorAutoProxyCreator.setProxyTargetClass(true); return defaultAdvisorAutoProxyCreator;}@Beanpublic AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager){ AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor(); authorizationAttributeSourceAdvisor.setSecurityManager(securityManager); return authorizationAttributeSourceAdvisor;}private Environment environment;@Overridepublic void setEnvironment(Environment environment) { this.environment = environment;}
}