AWS Memcached + EB Tomcat создает новый сеанс при добавлении объекта в сеанс
вопрос
Всякий раз, когда я добавляю сериализуемый объект в сеанс, Tomcat дает мне новый сеанс, и объект не добавляется. Я могу добавить строки и целые числа просто отлично.
Когда я перемещаю определение класса из скриптлета JSP (там для быстрого и грязного теста) в его собственный файл класса и удаляю static
модификатор, то объект может быть сохранен и реплицирован в memcached.
Почему статический объект класса уничтожает сеанс?
Моя настройка
- AWS Elasticbeanstalk с Tomcat 8, 2 экземпляра с балансировкой нагрузки с отключенными липкими сессиями
- 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));