Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@

public class RedisSessionManager extends ManagerBase implements Lifecycle {

public static final int DEFAULT_MAX_WAIT = -1;
public static final int DEFAULT_MAX_IDLE = 8;
public static final int DEFAULT_MIN_IDLE = 0;
public static final int DEFAULT_MAX_ACTIVE = 8;

protected byte[] NULL_SESSION = "null".getBytes();

private final Log log = LogFactory.getLog(RedisSessionManager.class);
Expand All @@ -36,6 +41,12 @@ public class RedisSessionManager extends ManagerBase implements Lifecycle {
protected int database = 0;
protected String password = null;
protected int timeout = Protocol.DEFAULT_TIMEOUT;

protected int maxIdle = DEFAULT_MAX_IDLE;
protected int minIdle = DEFAULT_MIN_IDLE;
protected int maxActive = DEFAULT_MAX_ACTIVE;
protected long maxWait = DEFAULT_MAX_WAIT;

protected JedisPool connectionPool;

protected RedisSessionHandlerValve handlerValve;
Expand Down Expand Up @@ -97,6 +108,38 @@ public void setSerializationStrategyClass(String strategy) {
this.serializationStrategyClass = strategy;
}

public int getMaxIdle() {
return maxIdle;
}

public void setMaxIdle(int maxIdle) {
this.maxIdle = maxIdle;
}

public int getMinIdle() {
return minIdle;
}

public void setMinIdle(int minIdle) {
this.minIdle = minIdle;
}

public int getMaxActive() {
return maxActive;
}

public void setMaxActive(int maxActive) {
this.maxActive = maxActive;
}

public long getMaxWait() {
return maxWait;
}

public void setMaxWait(long maxWait) {
this.maxWait = maxWait;
}

@Override
public int getRejectedSessions() {
// Essentially do nothing.
Expand Down Expand Up @@ -519,14 +562,23 @@ public void processExpires() {

private void initializeDatabaseConnection() throws LifecycleException {
try {
// TODO: Allow configuration of pool (such as size...)
connectionPool = new JedisPool(new JedisPoolConfig(), getHost(), getPort(), getTimeout(), getPassword());
JedisPoolConfig config = createJedisPoolConfig();
connectionPool = new JedisPool(config, getHost(), getPort(), getTimeout(), getPassword());
} catch (Exception e) {
e.printStackTrace();
throw new LifecycleException("Error Connecting to Redis", e);
}
}

public JedisPoolConfig createJedisPoolConfig() {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxWait(maxWait);
config.setMinIdle(minIdle);
config.setMaxIdle(maxIdle);
config.setMaxActive(maxActive);
return config;
}

private void initializeSerializer() throws ClassNotFoundException, IllegalAccessException, InstantiationException {
log.info("Attempting to use serializer :" + serializationStrategyClass);
serializer = (Serializer) Class.forName(serializationStrategyClass).newInstance();
Expand Down