Sto utilizzando Tomcat 5.5 e Spring 3.2. Nel descrittore di distribuzione web.xml, ho la seguente configurazione -Il contenitore Tomcat non riesce a utilizzare la configurazione <error-page> se si verifica un'eccezione dopo l'apertura di OutputStream dell'oggetto risposta.
<error-page>
<error-code>500</error-code>
<location>/500.jsp</location>
</error-page>
<error-page>
<error-code>403</error-code>
<location>/403.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
Il comportamento inspiegabile si verifica in un metodo simile a quello qui sotto -
public ModelAndView fileDownload(HttpServletRequest request,
HttpServletResponse response) throws Exception
{
String filename = (String) request.getParameter("filename");
//...more code
File file = new File(...+ filename); // pseudo code
OutputStream out = response.getOutputStream();
InputStream stream = new FileInputStream(file); // FileNotFoundException here
//...more code
}
Quando si verifica un FileNotFoundException, non mi vedi la mia custom 500.jsp usata per visualizzare la pagina di errore, ma invece vedo l'intera traccia dello stack dell'eccezione nella pagina. Se ho semplicemente invertire l'ordine delle due affermazioni come sotto,
InputStream stream = new FileInputStream(file); // FileNotFoundException here
OutputStream out = response.getOutputStream();
tutto funziona correttamente e ho la 500.jsp corretta reso sulla pagina.
Perché si verifica? L'unica differenza era che nel secondo caso, l'OutputStream dell'oggetto risposta non era aperto.
solo testare con Tomcat 5.5.36 + primavera 3.2.2.RELEASE e non può ottenere alcun problema, come si descrive qui. La pagina '500.jsp' personalizzata è stata sempre resa come previsto. E nessuna dipendenza dalla sequenza di queste due linee di codice. Si prega di fornire più file di configurazione per riprodurre questo errore. –
puoi fornire la traccia dello stack che vedi nella pagina? – Akshay
@CodeBlue se si sta ancora cercando una risposta, si prega di fornire la traccia dello stack dell'eccezione. – Akshay