package ddth.dasp.common.redis.impl.jedis; import org.apache.commons.pool.BasePoolableObjectFactory; import org.apache.commons.pool.PoolableObjectFactory; import ddth.dasp.common.redis.IRedisClient; import ddth.dasp.common.redis.impl.AbstractRedisClient; public class RedisClientPoolableObjectFactory extends BasePoolableObjectFactory<AbstractRedisClient> implements PoolableObjectFactory<AbstractRedisClient> { private String redisHost, redisUser, redisPassword; private int redisPort = IRedisClient.DEFAULT_REDIS_PORT; public RedisClientPoolableObjectFactory(String host, int port, String username, String password) { redisHost = host; redisPort = port; redisUser = username; redisPassword = password; } /** * {@inheritDoc} */ @Override public void activateObject(AbstractRedisClient redisClient) throws Exception { //EMPTY } /** * {@inheritDoc} */ @Override public void destroyObject(AbstractRedisClient redisClient) throws Exception { redisClient.destroy(); } /** * {@inheritDoc} */ @Override public AbstractRedisClient makeObject() throws Exception { AbstractRedisClient redisClient = new PoolableRedisClient(); redisClient.setRedisHost(redisHost).setRedisPort(redisPort).setRedisUsername(redisUser) .setRedisPassword(redisPassword); redisClient.init(); return redisClient; } /** * {@inheritDoc} */ @Override public void passivateObject(AbstractRedisClient redisClient) throws Exception { // EMPTY } /** * {@inheritDoc} */ @Override public boolean validateObject(AbstractRedisClient redisClient) { try { return redisClient.ping() != null; } catch (Exception e) { return false; } } }