DD vs POJO

6 respostas
A

Olá pessoal, acabei de me inscrever no forum e espero que a primeira pergunta nao seja idiota.
Estou lendo o livro Head First JSP, mto bom por sinal.
Vou lendo e tentando criar algumas coisinhas, eu trabalho com telefonia e administraçao de redes, entao programação nao é meu ganha pao, mas é algo que me diverte bastante.
Bom, criei um projeto web dinamico no Eclipse chamado SessionProject, o objetivo deste projeto é ver como funciona a criaçao de sessoes no j2ee e que informaçoes posso obter delas, coisinha simples.
Fiz um servlet que cria uma sessao, mostra quantas vezes o servlet foi acessado naquela sessao, qual a id da sessao, data e hora de criaçao, data e hora do ultimo acesso, tempo maximo de inatividade, qual o browser do usuario e qual o ip do usuário.
Até ai blz, estava feliz e contente com isso quando resolvi que deveria mostrar tb qtas sessoes ativas existem no meu container.
Foi ai que tentei de várias formas implementar HttpSessionListener, mas meu contador sempre me retornava 0 sessoes, 0 sessoes, 0 sessoes…
Depois de mto pensar achei o erro, burro, tinha esquecido de declarar o servlet que implementava HttpSessionListener no DD. Eu tinha feito a declaraçao da classe como listener no DD, mas nao como servlet. Bom, foi declarar tambem como servlet que tudo começou a funcionar.
Nao contente, pensei… pq eu sou obrigado a declarar todos os servlets no dd? O dd nao serve apenas pra relacionar url-patterns com os servlets? Se eu tenho um servlet que nao vai ser acessado diretamente nunca via url, pq declara-lo no DD?
Cheguei a conclusao que era pro container diferenciar meus servlets dos pojos, nao basta simplesmente extender HttpServlet, tem que declarar no DD.
Foi depois de pensar isso ai que me veio a maior duvida, caramba, minha classe que implementa HttpSessionListener é um POJO e nao um servlet, ela nao extende HttpServlet!!! E ela ta declarada como servlet no DD, e nao da pau!!
Alguem me explica? :slight_smile:

6 Respostas

Luca

Olá

O que é este tal de DD que você fala tanto?

E que significa POJ?

[]s
Luca

A

Sorry, é POJO, Plain Old Java Object, ou simplesmente uma classe java comum.
DD = Deployment Descriptor, web.xml do tomcat por exemplo.

marcelo_mococa

você não precisa mapear o Listener como um serlvet.

o Listener deve implementar a interface desejada (HttpSessionListener) e não extender a classe HttpServlet.

você deve estar errando em algum detalhe. Coloque o código aqui pra gente ver.

danieldestro

POJO são classes que não estendem ou implementam nenhuma classe ou interface de um framework, ou seja, são “classes puras”. Seu listener, toericamente, não é um POJO.

O que você quer, hoje em dia existe com o EJB 3.0, onde você apenas anota a classe como Stateless Session Bean, Stateful, Message Driven Bean, Entity e o container já identifica.

Talvez num futuro isso seja possível.

Mas você ter de implementar aquelas interfaces ou estender classes, faz com que seu servlet, listeners etc sigam a especificação definida.

A

Reforçando…
Se tiver a necessidade de implementar a interface Serializable sua classe continua sendo POJO.

pcalcado

Reforçando…
Se tiver a necessidade de implementar a interface Serializable sua classe continua sendo POJO.

Se for necessario, nao eh nao. Se for uma opcao ok.

Criado 30 de setembro de 2007
Ultima resposta 1 de out. de 2007
Respostas 6
Participantes 6