[Resolvido] : Duvida em relação a Sessao em JSF

Estou com uma seguinte dúvida eu trabalho no ambiente que utiliza primefaces e liferay, estou tentando fazer que o java fique verificando se a sessão do usuário ainda está aberta ou não.
E antes que a sessão acabe preciso setar algo no banco que está relacionado com o usuário e a atividade que ele está fazendo no momento no portlet.
Eu já vi que da para pegar a sessão com o seguinte código

    FacesContext facesContext = FacesContext.getCurrentInstance();  
    PortletRequest request = (PortletRequest) facesContext.getExternalContext().getRequest();  
    PortletSession session = request.getPortletSession();  

e consigo acessar aos seguintes métodos

session.getMaxInactiveInterval();
session.getLastAccessedTime();
session.getId();

e eu faço um calculo para verificar se o tempo passado desde que logou já passou do tempo maximo que uma sessão pode durar

if(((Calendar.getInstance().getTimeInMillis() - session.getLastAccessedTime())/1000) > session.getMaxInactiveInterval())
{
   //aqui eu teria que executar os comandos para alterar os itens do banco de dados
}

Alguém saberia uma maneira de me ajudar ?

import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
 
public class SessionListener implements HttpSessionListener {

 
    public void sessionCreated(HttpSessionEvent event) {
        synchronized (this) {

        }
 
    }
 
    public void sessionDestroyed(HttpSessionEvent event) {
        synchronized (this) {

       PortletSession session = event.getSession();  

        }
}

web.xml


<listener>
    <description>sessionListener</description>
    <listener-class>
        pacotedaclasse.SessionListener
    </listener-class>
</listener>

Esse listener vai escutar sua aplicação e todas as suas sessions vão passar por ela antes de morrerem, validar se a session tem usuários ou outras coisas tenho certeza que vc tira de
letra, abraços

Cara deu certo aqui o que você me falou,

muito obrigado mesmo.