AWS Memcached + EB Tomcat создает новый сеанс при добавлении объекта в сеанс - PullRequest
0 голосов
/ 29 ноября 2018

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));
...