Dúvida pré-prova SCWCD

GUJ,

Existem essas duas interfaces, HttpSessionBindingListener e HttpSessionAttributeListener.

A primeira possui os métodos:

valueBound(…)
valueUnBound(…)

E a segunda os métodos:

attributeAdded(…)
attributeRemoved(…)
attributeReplaced(…).

Supondo que eu faça um …

session.setAttribute(“SITE”,“GUJ”);

… e que eu tenha os dois listeners configurados. Eu sei que attributeAdded(…) é chamado, mas valueBound(…) também é? Se sim, existe uma ordem? E qual a diferença desses dois métodos, sendo que até o tipo do parâmetro é igual?

Valeu!

A diferença principal é onde usar as interfaces.
A HttpSessionBindingListener você implementa na própria classe do atributo que irá para a sessão, para que o próprio objeto seja notificado quando ele estiver sendo adicionado/removido dela.
Já a HttpSessionAttributeListener você implementa em outras classes pra monitorar de maneira mais geral o que está acontecendo com a lista de atributos da sessão.

A ordem eu não tenho certeza, mas chutaria que a HttpSessionBindingListener vai antes da HttpSessionAttributeListener. Porém, se não estiver escrito nada na especificação (não consultei para conferir), significa que cada conteiner pode implementar da forma que preferir.

Quanto a ordem os livros q eu estudei falam q os eventos são propagados na ordem que os listeners são declarados no DTD… Quanto a HttpSessionBindingListener não vi nada nao…

Ahhhh… era isso que eu não tinha pescado, ainda… valeu, Bani. Percebe-se que eu estou muito familiarizado com os tais listeners no meu dia-a-dia, não… :wink:

Bem, de qualquer forma, eu passei hoje no catzo da prova. Nada muito animador, 72% só… mas enfim. Caiu três ou quatro questões sobre listeners, nada muito cabuloso. Eu acho!.. :slight_smile: