Problemas com session do TomCat

9 respostas Resolvido
tomcat
E

Pessoal tenho uma aplicação em JSF usando o Tomcat, está definido em meu Web.xml o timeout para 30 minutos, mas ao acessar o manager do TomCat tem session com tempo de inatividade de mais de 22 horas que não foi removida. Mesmo fazendo o comando FacesContext.getCurrentInstance().getExternalContext().invalidateSession(); a sessão não está sendo removida.

9 Respostas

F

Posta ai o seu web.xml …
Nunca aconteceu comigo…

E

Segue abaixo:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
  <welcome-file-list>
    <welcome-file>index.xhtml</welcome-file>
  </welcome-file-list>
  <error-page>
    <exception-type>javax.faces.application.ViewExpiredException</exception-type>
    <location>/index.xhtml</location>
  </error-page>
  <error-page>
    <error-code>404</error-code>
    <location>/index.xhtml</location>
  </error-page>
  <error-page>
    <error-code>500</error-code>
    <location>/index.xhtml</location>
  </error-page>
  <context-param>
    <param-name>primefaces.CLIENT_SIDE_VALIDATION</param-name>
    <param-value>true</param-value>
  </context-param>
  <context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
  </context-param>
  <context-param>
    <param-name>javax.faces.FACELETS_REFRESH_PERIOD</param-name>
    <param-value>0</param-value>
  </context-param>
  <listener>
    <listener-class>org.jboss.weld.environment.servlet.Listener</listener-class>
  </listener>
  <resource-env-ref>
    <resource-env-ref-name>BeanManager</resource-env-ref-name>
    <resource-env-ref-type>javax.enterprise.inject.spi.BeanManager</resource-env-ref-type>
  </resource-env-ref>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
  </servlet-mapping>
  <servlet>
    <servlet-name>Push Servlet</servlet-name>
    <servlet-class>org.primefaces.push.PushServlet</servlet-class>
    <async-supported>true</async-supported>
  </servlet>
  <servlet-mapping>
    <servlet-name>Push Servlet</servlet-name>
    <url-pattern>/primepush/*</url-pattern>
  </servlet-mapping>
  <session-config>
    <session-timeout>30</session-timeout>
  </session-config>
  <error-page>
    <exception-type>javax.faces.application.ViewExpiredException</exception-type>
    <location>/index.xhtml</location>
  </error-page>
</web-app>
F

Aparentemente ta certo…30 minutos por sessão.
Baseado em que vc ta dizendo que não esta expirando?

E

Quando eu verifico as seções no manager do Tomcat (imagem abaixo) tem casos de inativas superior a tempo limite de timeout e algumas vezes por dias.

F

Pior que eu não uso esse manager…uso probe…não sei te dizer que isso indica que a sessão é e esta na forma que vc afirma…

E

ok, sem problemas. Desde já agradeço.

F

Para ter certeza certeza mesmo…faz um listener servlet container de sessão, faz um logg la simples de veja se depois do tempo configurado ele realmente não esta destruindo

E

ok, vou fazer o teste para entender melhor se está ficando em aberto ou não.
Obrigado.

E
Solucao aceita

Problema resolvido conforme abaixo:
session.setMaxInactiveInterval(26060);
Com essa instrução após o final do tempo da seção em estado de inativa o Tomcat remove ela da lista de seções.

Criado 18 de janeiro de 2017
Ultima resposta 28 de jan. de 2017
Respostas 9
Participantes 2