Galera, estou fazendo um exemplo tosco de um programa com hibernate para a faculdade. Perguntei ao professor se a gente podia usar framework, e ele disse que queria em servlet/jsp/jstl puro.
Bem, como não pude usar o VRaptor, fui implementar um Filter para fazer um OpenSessionInView na mão. O lance é que meu filtro é chamado mais de uma vez. Os servlets no fim do FilterChain que tratam as requisições são executados só uma vez.
Não tenho a menor idéia do que possa ser. Estou usando o Tomcat 7.0.20, mas já testei com o 6 e continuou o mesmo comportamento.
Tipo, o programinha funciona sem problemas, mas eu fico abrindo e fechando sessões do hibernate sem necessidade.
Alguém já passou por isso, ou tem ideia do que possa ser? Qualquer contribuição será super bem-vinda =)
Galera, estou fazendo um exemplo tosco de um programa com hibernate para a faculdade. Perguntei ao professor se a gente podia usar framework, e ele disse que queria em servlet/jsp/jstl puro.
Bem, como não pude usar o VRaptor, fui implementar um Filter para fazer um OpenSessionInView na mão. O lance é que meu filtro é chamado mais de uma vez. Os servlets no fim do FilterChain que tratam as requisições são executados só uma vez.
Não tenho a menor idéia do que possa ser. Estou usando o Tomcat 7.0.20, mas já testei com o 6 e continuou o mesmo comportamento.
Tipo, o programinha funciona sem problemas, mas eu fico abrindo e fechando sessões do hibernate sem necessidade.
Alguém já passou por isso, ou tem ideia do que possa ser? Qualquer contribuição será super bem-vinda =)
Isso é normal, o filtro pode ser chamado recursivamente dependendo da URL da patter declarada e dos forwards internos ocorridos…
E é claro que o servlets são executados 1 vez…
Agora, acho que quando der tempo, vc precisaria ler um livro basico de servlet e JSP para clarear as ideias…
B
bob_sponja
FernandoFranzini:
bob_sponja:
Galera, estou fazendo um exemplo tosco de um programa com hibernate para a faculdade. Perguntei ao professor se a gente podia usar framework, e ele disse que queria em servlet/jsp/jstl puro.
Bem, como não pude usar o VRaptor, fui implementar um Filter para fazer um OpenSessionInView na mão. O lance é que meu filtro é chamado mais de uma vez. Os servlets no fim do FilterChain que tratam as requisições são executados só uma vez.
Não tenho a menor idéia do que possa ser. Estou usando o Tomcat 7.0.20, mas já testei com o 6 e continuou o mesmo comportamento.
Tipo, o programinha funciona sem problemas, mas eu fico abrindo e fechando sessões do hibernate sem necessidade.
Alguém já passou por isso, ou tem ideia do que possa ser? Qualquer contribuição será super bem-vinda =)
Isso é normal, o filtro pode ser chamado recursivamente dependendo da URL da patter declarada e dos forwards internos ocorridos…
E é claro que o servlets são executados 1 vez…
Agora, acho que quando der tempo, vc precisaria ler um livro basico de servlet e JSP para clarear as ideias…
Eu sei que o filtro é chamado para todas as URLs que batem com o que está definido no , inclusive está mapeado para todas elas:
Também sei que a ordem de declaração dos filtros determina a ordem em que eles são chamados. Tenho o livro JSP e Servlet do use a cabeça, mas em nenhum lugar dele fala que para UMA ÚNICA requisição seu filtro pode ser chamado mais de uma vez.
Tipo, estou fazendo uma requisição, o filtro bate com somente aquela requisição. Não sei porque ele seria chamado novamente.
B
bob_sponja
FernandoFranzini:
bob_sponja:
Galera, estou fazendo um exemplo tosco de um programa com hibernate para a faculdade. Perguntei ao professor se a gente podia usar framework, e ele disse que queria em servlet/jsp/jstl puro.
Bem, como não pude usar o VRaptor, fui implementar um Filter para fazer um OpenSessionInView na mão. O lance é que meu filtro é chamado mais de uma vez. Os servlets no fim do FilterChain que tratam as requisições são executados só uma vez.
Não tenho a menor idéia do que possa ser. Estou usando o Tomcat 7.0.20, mas já testei com o 6 e continuou o mesmo comportamento.
Tipo, o programinha funciona sem problemas, mas eu fico abrindo e fechando sessões do hibernate sem necessidade.
Alguém já passou por isso, ou tem ideia do que possa ser? Qualquer contribuição será super bem-vinda =)
Isso é normal, o filtro pode ser chamado recursivamente dependendo da URL da patter declarada e dos forwards internos ocorridos…
E é claro que o servlets são executados 1 vez…
Agora, acho que quando der tempo, vc precisaria ler um livro basico de servlet e JSP para clarear as ideias…
Esqueci de mencionar, mas pela declaração do filtro, ele não intercepta forward, nem include nem error handle.
Realmente estou sem entender esse comportamento. Se realmente DEVE funcionar assim, então não há como eu fazer nada apesar de continuar achando estranho. Mas valeu pela sugestão, Fernando
FernandoFranzini
É muito simples descobrir…imprima a URL dentro do filtro no console para vc ver todo o stack das chamadas!
por exemplo, em paginas JSF 1.2 feita em JSP, o filtro é executado 2 vezes:
1 para url .jsf do servlet JSF
outra para JSP que gera o servlet da pagina…
Posta ai o log e vamos descobrir o pq…
B
bob_sponja
FernandoFranzini:
É muito simples descobrir…imprima a URL dentro do filtro no console para vc ver todo o stack das chamadas!
por exemplo, em paginas JSF 1.2 feita em JSP, o filtro é executado 2 vezes:
1 para url .jsf do servlet JSF
outra para JSP que gera o servlet da pagina…
Posta ai o log e vamos descobrir o pq…
Fernando, valeu pela idéia de isolamento. Realmente simples e eu não percebi. O filtro estava interceptando recursos estáticos também. Olha o resultado da saída:
Só preciso verificar se a requisição é para um recurso estático, ou de fato algum jsp ou servlet. Mais uma vez obrigado.
FernandoFranzini
Sim…eu faço assim…
Pasta chamada “publica” e dentro dela coloco todos o recursos estáticos e públicos que não requer autenticação - imagens, JS, CSS, templates, wherever
Pasta chamada “sistema” e dentro dela coloco todos o recursos do sistema que requer autenticação.
O filtro deve ser operado em cima do “/sistema/*”
Aplicar servlet filter sobre coisas estáticas pode degradar a performance desnecessariamente na carga da paginas para o usuário final. Ja tive casos de melhoras significativas em minhas consultorias, dependendo do filtro.