Added readMode property for RedissonSessionManager #974

pull/1025/head
Nikita 8 years ago
parent b93cba087b
commit b573eadd80

@ -23,6 +23,7 @@ import java.util.concurrent.TimeUnit;
import org.apache.catalina.session.StandardSession; import org.apache.catalina.session.StandardSession;
import org.redisson.api.RMap; import org.redisson.api.RMap;
import org.redisson.tomcat.RedissonSessionManager.ReadMode;
/** /**
* Redisson Session object for Apache Tomcat * Redisson Session object for Apache Tomcat
@ -35,10 +36,12 @@ public class RedissonSession extends StandardSession {
private final RedissonSessionManager redissonManager; private final RedissonSessionManager redissonManager;
private final Map<String, Object> attrs; private final Map<String, Object> attrs;
private RMap<String, Object> map; private RMap<String, Object> map;
private final RedissonSessionManager.ReadMode readMode;
public RedissonSession(RedissonSessionManager manager) { public RedissonSession(RedissonSessionManager manager, RedissonSessionManager.ReadMode readMode) {
super(manager); super(manager);
this.redissonManager = manager; this.redissonManager = manager;
this.readMode = readMode;
try { try {
Field attr = StandardSession.class.getDeclaredField("attributes"); Field attr = StandardSession.class.getDeclaredField("attributes");
@ -50,6 +53,15 @@ public class RedissonSession extends StandardSession {
private static final long serialVersionUID = -2518607181636076487L; private static final long serialVersionUID = -2518607181636076487L;
@Override
public Object getAttribute(String name) {
if (readMode == ReadMode.REDIS) {
return map.get(name);
}
return super.getAttribute(name);
}
@Override @Override
public void setId(String id, boolean notify) { public void setId(String id, boolean notify) {
super.setId(id, notify); super.setId(id, notify);

@ -41,13 +41,24 @@ import org.redisson.config.Config;
*/ */
public class RedissonSessionManager extends ManagerBase implements Lifecycle { public class RedissonSessionManager extends ManagerBase implements Lifecycle {
public enum ReadMode {REDIS, MEMORY}
private final Log log = LogFactory.getLog(RedissonSessionManager.class); private final Log log = LogFactory.getLog(RedissonSessionManager.class);
protected LifecycleSupport lifecycle = new LifecycleSupport(this); protected LifecycleSupport lifecycle = new LifecycleSupport(this);
private RedissonClient redisson; private RedissonClient redisson;
private String configPath; private String configPath;
private ReadMode readMode = ReadMode.MEMORY;
public String getReadMode() {
return readMode.toString();
}
public void setReadMode(String readMode) {
this.readMode = ReadMode.valueOf(readMode);
}
public void setConfigPath(String configPath) { public void setConfigPath(String configPath) {
this.configPath = configPath; this.configPath = configPath;
} }
@ -135,7 +146,7 @@ public class RedissonSessionManager extends ManagerBase implements Lifecycle {
@Override @Override
public Session createEmptySession() { public Session createEmptySession() {
return new RedissonSession(this); return new RedissonSession(this, readMode);
} }
@Override @Override

@ -23,6 +23,7 @@ import java.util.concurrent.TimeUnit;
import org.apache.catalina.session.StandardSession; import org.apache.catalina.session.StandardSession;
import org.redisson.api.RMap; import org.redisson.api.RMap;
import org.redisson.tomcat.RedissonSessionManager.ReadMode;
/** /**
* Redisson Session object for Apache Tomcat * Redisson Session object for Apache Tomcat
@ -35,10 +36,12 @@ public class RedissonSession extends StandardSession {
private final RedissonSessionManager redissonManager; private final RedissonSessionManager redissonManager;
private final Map<String, Object> attrs; private final Map<String, Object> attrs;
private RMap<String, Object> map; private RMap<String, Object> map;
private final RedissonSessionManager.ReadMode readMode;
public RedissonSession(RedissonSessionManager manager) { public RedissonSession(RedissonSessionManager manager, RedissonSessionManager.ReadMode readMode) {
super(manager); super(manager);
this.redissonManager = manager; this.redissonManager = manager;
this.readMode = readMode;
try { try {
Field attr = StandardSession.class.getDeclaredField("attributes"); Field attr = StandardSession.class.getDeclaredField("attributes");
attrs = (Map<String, Object>) attr.get(this); attrs = (Map<String, Object>) attr.get(this);
@ -49,6 +52,15 @@ public class RedissonSession extends StandardSession {
private static final long serialVersionUID = -2518607181636076487L; private static final long serialVersionUID = -2518607181636076487L;
@Override
public Object getAttribute(String name) {
if (readMode == ReadMode.REDIS) {
return map.get(name);
}
return super.getAttribute(name);
}
@Override @Override
public void setId(String id, boolean notify) { public void setId(String id, boolean notify) {
super.setId(id, notify); super.setId(id, notify);

@ -40,11 +40,22 @@ import org.redisson.config.Config;
*/ */
public class RedissonSessionManager extends ManagerBase { public class RedissonSessionManager extends ManagerBase {
public enum ReadMode {REDIS, MEMORY}
private final Log log = LogFactory.getLog(RedissonSessionManager.class); private final Log log = LogFactory.getLog(RedissonSessionManager.class);
private RedissonClient redisson; private RedissonClient redisson;
private String configPath; private String configPath;
private ReadMode readMode = ReadMode.MEMORY;
public String getReadMode() {
return readMode.toString();
}
public void setReadMode(String readMode) {
this.readMode = ReadMode.valueOf(readMode);
}
public void setConfigPath(String configPath) { public void setConfigPath(String configPath) {
this.configPath = configPath; this.configPath = configPath;
} }
@ -113,7 +124,7 @@ public class RedissonSessionManager extends ManagerBase {
@Override @Override
public Session createEmptySession() { public Session createEmptySession() {
return new RedissonSession(this); return new RedissonSession(this, readMode);
} }
@Override @Override

@ -23,6 +23,7 @@ import java.util.concurrent.TimeUnit;
import org.apache.catalina.session.StandardSession; import org.apache.catalina.session.StandardSession;
import org.redisson.api.RMap; import org.redisson.api.RMap;
import org.redisson.tomcat.RedissonSessionManager.ReadMode;
/** /**
* Redisson Session object for Apache Tomcat * Redisson Session object for Apache Tomcat
@ -35,10 +36,13 @@ public class RedissonSession extends StandardSession {
private final RedissonSessionManager redissonManager; private final RedissonSessionManager redissonManager;
private final Map<String, Object> attrs; private final Map<String, Object> attrs;
private RMap<String, Object> map; private RMap<String, Object> map;
private final RedissonSessionManager.ReadMode readMode;
public RedissonSession(RedissonSessionManager manager) { public RedissonSession(RedissonSessionManager manager, RedissonSessionManager.ReadMode readMode) {
super(manager); super(manager);
this.redissonManager = manager; this.redissonManager = manager;
this.readMode = readMode;
try { try {
Field attr = StandardSession.class.getDeclaredField("attributes"); Field attr = StandardSession.class.getDeclaredField("attributes");
attrs = (Map<String, Object>) attr.get(this); attrs = (Map<String, Object>) attr.get(this);
@ -49,6 +53,15 @@ public class RedissonSession extends StandardSession {
private static final long serialVersionUID = -2518607181636076487L; private static final long serialVersionUID = -2518607181636076487L;
@Override
public Object getAttribute(String name) {
if (readMode == ReadMode.REDIS) {
return map.get(name);
}
return super.getAttribute(name);
}
@Override @Override
public void setId(String id, boolean notify) { public void setId(String id, boolean notify) {
super.setId(id, notify); super.setId(id, notify);

@ -39,11 +39,23 @@ import org.redisson.config.Config;
*/ */
public class RedissonSessionManager extends ManagerBase { public class RedissonSessionManager extends ManagerBase {
public enum ReadMode {REDIS, MEMORY}
private final Log log = LogFactory.getLog(RedissonSessionManager.class); private final Log log = LogFactory.getLog(RedissonSessionManager.class);
private RedissonClient redisson; private RedissonClient redisson;
private String configPath; private String configPath;
private ReadMode readMode = ReadMode.MEMORY;
public String getReadMode() {
return readMode.toString();
}
public void setReadMode(String readMode) {
this.readMode = ReadMode.valueOf(readMode);
}
public void setConfigPath(String configPath) { public void setConfigPath(String configPath) {
this.configPath = configPath; this.configPath = configPath;
} }
@ -112,7 +124,7 @@ public class RedissonSessionManager extends ManagerBase {
@Override @Override
public Session createEmptySession() { public Session createEmptySession() {
return new RedissonSession(this); return new RedissonSession(this, readMode);
} }
@Override @Override

Loading…
Cancel
Save