Amigos.
No tomcat 5.5.12 eu capturava os erros utilizando o web-xml, assim:
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/erro.jsp</location>
</error-page>
Porém, após esta versão (versão 5.5.17 em diante - hoje já temos a versão 6.0.2), este código não é mais capaz de capturar o erro.
Será mesmo um bug do tomcat?
Tenho visto grandes empresas do ramo de software abandonando as novas versões (utilizando somente a 5.5.12) - será que é por causa deste bug?
Se isto for um bug, por que a Apache não corrigiu? (Já testei a versão 6.0.2 e o bug continua!!!)
Ou se isto não for um bug, alguém aí sabe como implementar isto no web-xml?, será que mudou alguma coisa?
Obrigado a quem possa responder.
Amém
OK!
Descobri que isto só acontece no Internet Explorer. Basta acessar as opções do browser e desmarcar “Mostrar mensagens de erro Http amigáveis”.
Acontece que o IE, ao perceber o erro, coloca a página default dele, uma “mensagem amigável”, em detrimento das páginas de erro do aplicativo.´
Então não parece ser um bug do Tomcat. Acontece que persiste o problema, pois o usuário não tem que saber isto.
O fato é que deve existir uma maneira de desabilitar isto dentro das nossas páginas jsp/erro.
Alguém aí sabe?
O que estou achando é o seguinte: as versões antigas retornavam um código HTTP 200 e uma página de erro.
Isso não é o comportamento definido pelo padrão HTTP, mas normalmente, para você usar o Internet Explorer sem as tais “mensagens amigáveis”, você teria de receber um código HTTP 200 (OK).
Essa versão segue o padrão e lhe retorna o código correto do erro (404, 500 etc.), junto com a página de erro.
Acho que você teria de mexer no Tomcat para ele ter o comportamento “antigo”.
OK,
Vou estudar um pouco mais isto.
Agora descobri que se a página de erro for muito pequena, ela não é capturada, mas se ela for grande o bastante, mesmo com aquela opçao do Internet Explorer habilitada, a página jsp/erro é exibida (o mapeamento funciona) - porém só funciona uma vez, daí você precisará reiniciar o Tomcat.
Pensando bem… ainda tá me parecendo um bug…
Veja o post abaixo: