Pergunta

Eu tenho sessionVar assim no elevador:

object MyObject {
   object myVar extends SessionVar[Box[MyObject]](Empty)
}

Então eu defino valor uma vez para myvar:

 MyObject.myVar(Full(value))

Meu problema é que, depois de algum tempo (1-5 minutos), o Myvar perderá seu valor, ou seja, ele terá valor vazio novamente. Isso não se deve à inatividade, pois estou clicando em páginas constantemente. Meu código não está definindo o valor para esvaziar. Durante este 1-5 minutos, o Myvar funcionará corretamente. Os logs não contêm mensagens relacionadas.

Tentei adicionar o método de desligamento ao Myvar, mas ele não está sendo chamado.

 override protected def onShutdown(session: CleanUpParam): Unit = {
   Log.error("shutdown executed")
 }

Estou correndo elevando no cais via mvn jetty:run comando. Estou usando 1.1-SNAPShot de elevador. Não estou criando explicitamente nenhum tipo de biscoito ou sessão.

Alguma idéia do que está acontecendo? Pode ser que a sessão expire ou invalida de alguma forma, mas por que e por quem?

Eu até tentei desativar o LIVLGC com (LiftRules.enableLiftGC = false) mas isso não afeta.

Foi útil?

Solução

Eu imagino que a questão é que, ao clicar, você está criando acidentalmente uma nova sessão. Isso explicaria por que você não está recebendo o evento de desligamento da sessão: a sessão antiga ainda existe, mas você não está mais usando. Eu sugiro que você imprima o ID da sessão com cada solicitação e veja se ele muda.

Você pode estar perdendo a sessão porque o cookie da sessão está expirando ou porque não está codificando alguns links (consulte httpServletResponse.encodeurl) ou porque está navegando para fora do caminho de contexto do seu aplicativo.

Outras dicas

Qual é o tempo de validade da sua sessão definido em vida?

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