Existe uma maneira de especificar um armazenamento de sessão diferente com Tomcat?

StackOverflow https://stackoverflow.com/questions/82340

  •  01-07-2019
  •  | 
  •  

Pergunta

Tomcat (versão 5 aqui) armazena informações de sessão na memória. Quando o agrupamento desta informação é periodicamente transmitir a outros servidores no cluster para manter as coisas em sincronia. Você pode usar uma loja de banco de dados para fazer sessões persistant mas esta informação só é escrito periodicamente bem e só é realmente usado para o fracasso recuperação em vez de realmente substituir as sessões na memória.

Se você não quiser usar sessões persistentes (nossa configuração não permite, infelizmente), este levanta o problema das sessões ficando fora de sincronia.

Em outras linguagens, frameworks web tendem a permitir que você use um banco de dados como o armazenamento de sessão primário. Enquanto isto introduz um potencial problema de escala que faz a gestão de sessões make muito simples. Eu estou querendo saber se há uma maneira de obter tomcat para usar um banco de dados para as sessões desta forma (tecnicamente isso também eliminaria a necessidade de qualquer configuração de cluster no server.xml tomcat).

Foi útil?

Solução

Há definitivamente uma maneira. Embora eu votaria fortemente para sessões persistentes - economiza tanto de carga para os servidores / banco de dados (a menos que algo falha) ...

http://tomcat.apache.org/tomcat-5.5 -doc / config / manager.html tem informações sobre a configuração SessionManager e configuração para Tomcat. Dependendo de suas necessidades exatas que você pode ter que implementar seu próprio gerenciador de sessões, mas este ponto de partida deve fornecer alguma ajuda.

Outras dicas

Dê uma olhada Terracotta , eu acho que pode resolver seus problemas de escala, sem uma grande reformulação aplicação.

Eu sempre fui um fã da técnica sessões de Rails: armazenar as sessões (zipado + criptografado + assinado) no cookie do usuário. Dessa forma, você pode fazer o balanceamento de carga para seu índice dos corações, e não precisa se preocupar com sessões persistentes, ou bater o banco de dados para seus dados de sessão, etc. Estou apenas não tenho certeza você poderia implementar isso facilmente em um aplicativo java sem algum tipo de reescrever o seu código sessão de acesso. De qualquer forma apenas um pensamento.

Outra alternativa seria a memcached-session-manager , um memcached solução de failover sessão e replicação de sessão base para tomcat 6.x / 7.x Ele suporta ambas as sessões pegajosas e sessões não-pegajoso.

Eu criei este projeto para obter o melhor de desempenho e confiabilidade, e para ser capaz de escalar apenas adicionando mais tomcat e nós memcached.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top