Páginas de erro personalizadas no Apache Tomcat

2

Estou executando um servidor Apache Tomcat com 2 servlets personalizados. A estrutura da árvore se parece com:

$CATALINA_HOME/webapps/
         ROOT/
           WEB-INF/
         servlet1/
           META-INF/
           WEB-INF/
         servlet2/
           META-INF/
           WEB-INF/

Estou tentando adicionar uma página html de erro personalizado para cada servlet que será exibido no erro 400, 404 e quando houver uma exceção no servlet (como as informações que deveriam ser enviadas ao servlet no servidor). pedido de http não está lá)

eu adicionei a $CATALINA_HOME/webapps/servlet1/WEB-INF/web.xml

 <error-page>
   <error-code>400</error-code>
   <location>/error.html</location>
 </error-page>
 <error-page>
   <error-code>404</error-code>
   <location>/error.html</location>
 </error-page>
 <error-page>
   <exception-type>java.lang.Throwable</exception-type>
   <location>/error.html</location>
 </error-page>

e criei error.html em $CATALINA_HOME/webapps/ROOT/ . Isso não parece estar funcionando. Quando eu digito " www.server.com/servlet1/SomRandomStuff para obter um 404, uma página em branco é exibida, não error.html. Algo mais acontece quando eu chamo o servlet sem passar a informação correta para ele, o navegador perguntará se eu quero baixar um arquivo.
Eu tentei colocar error.html não em ROOT , mas no diretório servlet1. Não funcionou. Eu verifiquei que error.html tem as permissões corretas, está tudo bem. Estou sem ideias e os poucos tutoriais que encontrei online são muito vagos.

O que estou fazendo de errado? Como faço para isso - exibir uma página de erro personalizada por servlet?

Obrigado pela ajuda.

    
por Mr Aleph 31.03.2011 / 14:32

3 respostas

2

Você tem os caminhos da sua página começando com barras:

 <error-page>
   <error-code>400</error-code>
   <location>**/error.html**</location>
 </error-page>
 <error-page>
   <error-code>404</error-code>
   <location>**/error.html**</location>
 </error-page>
 <error-page>
   <exception-type>java.lang.Throwable</exception-type>
   <location>**/error.html**</location>
 </error-page>

Nesse caso, ele pode estar procurando por eles na raiz da unidade.

Se eles estiverem na mesma pasta que web.xml, você poderá tentar desta forma ./error.html

Além disso, recomendo testar o caminho completo para o arquivo: /var/www/error/error.html ou qualquer que seja sua situação.

    
por 31.03.2011 / 14:57
1

para capturar 404 para www.server.com/servlet1/SomRandomStuff , mova seu arquivo error.html para $CATALINA_HOME/webapps/servlet1/error.html . Copie o arquivo de erro para cada um de seus aplicativos da Web. Mesmo não sendo a melhor maneira de lidar com isso, funcionou para mim.

    
por 22.10.2015 / 00:24
0

Seu arquivo de erro deve ficar nesse diretório (não raiz):

$CATALINA_HOME/webapps/servlet1
    
por 30.05.2018 / 23:26