Issue
Всякий раз, когда я добавляю сериализуемый объект в сеанс, Tomcat дает мне новый сеанс, и объект не добавляется.Я могу просто добавить строки и целые числа.
Когда я перемещаю определение класса из сценария JSP (там для быстрого и грязного теста) в его собственный файл класса и удаляю модификатор static
, затемобъект может храниться и реплицироваться в memcached.
Почему статический объект класса уничтожает сеанс?
Моя настройка
- AWSElasticbeanstalk с Tomcat 8, 2 экземпляра с балансировкой нагрузки с липкими сессиями OFF
- AWS Elasticache с Memcached, 1 узел
context.xml:
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="tomcat-session-cache.XXXXXX.cfg.XXXX.cache.amazonaws.com:11211"
memcachedProtocol="binary"
sticky="false"
sessionBackupAsync="false"
requestUriIgnorePattern=".*\.(gif|jpg|jpeg|png|ico)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
как я добавляю объект в сеанс:
public static class SessionObject implements java.io.Serializable {
private static final long serialVersionUID = 1L;
public String str;
public int num;
public SessionObject(String str, int num) {
this.str = str;
this.num = num;
}
}
...
session.setAttribute("objInSession", new SessionObject("test", 123));