Home Conhecendo os Listeners - Jakarta EE
Post
Cancelar

Conhecendo os Listeners - Jakarta EE

O que são Listeners

• Os listeners permitem que o seu código seja avisado quando algum evento do seu interesse ocorre

• Se você criar e registrar um listener, o container o invoca na presença de um evento

• Existem oito tipos de listeners

Interfaces dos Listeners
ServletContextListener
ServletContextAttributeListener
ServletRequestListener
ServletRequestAttributeListener
HttpSessionListener
HttpSessionAttributeListener
HttpSessionBindingListener
HttpSessionActivationListener

Os listeners são interfaces. Basta implementar a interface desejada e registrá-la

Configurando um Listener

• Para que o container saiba da existência do listener, é preciso registrá-lo no web.xml

1
2
3
4
5
<web-app>
  <listener>
    <listener-class>listener.MyListener</listener-class><!--Esta classe deve implementar uma das sete interfaces de listener-->
  </listener>
</web-app>

Listeners e Annotations

• Outra forma de configurar um listener é através de annotations

1
2
3
4
5
6
7
@WebListener//@WebListener define que a classe é um listener
public class MyListener implements ServletContextListener {
  public void contextInitialized(ServletContextEvent e) {
  }
  public void contextDestroyed(ServletContextEvent e) { 
  }
}

Listeners do Servlet Context

• ServletContextListener

MétodoInvocado quando…
contextInitialized()A aplicação web está sendo iniciada
contextDestroyed()A aplicação web está sendo terminada

• ServletContextAttributeListener

MétodoInvocado quando…
attributeAdded()Um atributo é adicionado ao servlet context
attributeRemoved()Um atributo é removido do servlet context
attributeReplaced()Um atributo é substituído no servlet context

Listeners do Servlet Request

• ServletRequestListener

MétodoInvocado quando…
requestInitialized()A request está iniciando
requestDestroyed()A request está terminando

• ServletRequestAttributeListener

MétodoInvocado quando…
attributeAdded()Um atributo é adicionado à request
attributeRemoved()Um atributo é removido da request
attributeReplaced()Um atributo é substituído na request

Listeners da HTTP Session

• HttpSessionListener

MétodoInvocado quando…
sessionCreated()Uma session está sendo criada
sessionDestroyed()Uma session está sendo invalidada

• HttpSessionAttributeListener

MétodoInvocado quando…
attributeAdded()Um atributo é adicionado à session
attributeRemoved()Um atributo é removido da session
attributeReplaced()Um atributo é substituído na session

• HttpSessionActivationListener

MétodoInvocado quando…
sessionDidActivate()Uma session está sendo trazida para a memória
sessionWillPassivate()Uma session está sendo retirada da memória

• Servidores de aplicações podem decidir o que fazer com dados da session

• Remover da memória (armazenar em disco)

• Migrar os dados para outra JVM (ambiente distribuído)

• HttpSessionBindingListener

– É o único listener que não precisa ser configurado

• Nem no web.xml nem via @WebListener

– Classes cujos objetos precisam ser notificados quando são adicionados ou removidos de uma session implementam esta interface

MétodoInvocado quando…
valueBound()O objeto é adicionado numa session
valueUnbound()O objeto é removido de uma session

Baseado nos cursos da Softblue

Esta postagem está licenciada sob CC BY 4.0 pelo autor.