Como aparecer Stacktrace completo na página de erro?

Tenho uma aplicação Web que utiliza Hibernate e minhas exceptions de banco (HibernateException) são tratadas no Servlet. Este a “empacota” em uma exceção criada por mim (WebCommandException) e lança para o FrontController. Este por sua vez dá um “throw” dentro de uma ServletException. O que acontece é que quando o Tomcat exibe o erro (não uso errorPage customizada) só aparece a mensagem da exception e não o stacktrace completo.
Segue mais ou menos o que estou fazendo no meu Servlet:

public void execute() throws WebCommandException {
try {
   ProdutoDAO.save(produto);

} catch (HibernateException e) {
   throw new WebCommandException(e);
}
}

o FrontController:

try {
   command.execute();

} catch (WebCommandException e) {

    throw new ServletException(e);
}

código de WebCommandException:

public class WebCommandException extends Exception {
    public WebCommandException(Throwable e) {
        super(e);
    }
}

existe alguma forma de exibir todo o stacktrace na página ?

Após umas pesquisas no Google, consegui escrever uma solução que resolve este problema. Primeiro, criei uma classe que encapsula qualquer exception e retorna uma RuntimeException, sem perder o stacktrace. Depois é só deixar o Servlet lançar a exceção para o servidor e configurar uma errorPage default.
Segue o código da classe:

public class WebCommandException extends RuntimeException {
    
    Throwable throwable;
    
    private WebCommandException(Throwable t) {
        this.throwable = t;
    }
    
    /** Wraps another exeception in a RuntimeException. */
    public static RuntimeException wrap(Throwable t) {
        if (t instanceof RuntimeException)
            return (RuntimeException) t;
        return new WebCommandException(t);
    }
    
    public Throwable getCause() {
        return this.throwable;
    }
    
    public void printStackTrace() {
        this.throwable.printStackTrace();
    }
}

Método que lança a exceção:

try {
    ...
} catch (Exception e) {
    throw WebCommandException.wrap(e);
}

Página de erro default (tem que configurar no web.xml):

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Erro
</title>
    </head>
    <body>
        
        <h1>Página de erro</h1>
        <h2>Ocorreu um erro fatal</h2>
        
        <pre>        
        <%
        StringWriter sw = new StringWriter();
        PrintWriter pw = new PrintWriter(sw);
        exception.printStackTrace(pw);
        out.print(sw);
        sw.close();
        pw.close();
        %>
        </pre>
        
    </body>
</html>

Se alguém souber como fazer a página com JSTL me avise.