como capturar erros globalmente, registrá-los e mostrar ao usuário uma página de erro no aplicativo J2EE
Pesquisei este tópico no google um pouco e vi algumas práticas recomendadas. Mas preciso de alguns conselhos específicos. Estou trabalhando em um aplicativo J2EE que possui servlets / Struts2 / Call para DAO de JSP's. Portanto, o aplicativo está todo bagunçado. A maioria dos dados é buscada através de procedimentos armazenados, que estão sendo chamados pelo iBatis ORM / Spring. Às vezes, quando um erro ocorre no lado do SP, ele exibe uma mensagem feia para o usuário, como abaixo:
javax.servlet.ServletException: org.springframework.jdbc.BadSqlGrammarException: SqlMapClient operation; bad SQL grammar []; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in debtowed.xml.
--- The error occurred while applying a parameter map.
--- Check the debtowed.getFormerTenantData.
--- Check the statement (update procedure failed).
--- Cause: java.sql.SQLException: ORA-06550: line 1, column 11:
PLS-00905: object package.GET_FORMER_ADDRESS is invalid
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
Caused by: java.sql.SQLException: ORA-06550: line 1, column 11:
PLS-00905: object package.GET_FORMER_ADDRESS is invalid
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
Nesse ponto, as informações acima são exibidas no navegador e registradas no server.log.
No entanto, quero fazer o seguinte:
Por favor, diga-me qual é a melhor maneira de fazer isso? Devo adicionar algo no web.xml? como um ouvinte? Essa será a única alteração ou terei que alterar o código existente?
O código não realiza nenhuma verificação de erro. apenas chama o SP como abaixo
getSqlMapClientTemplate().queryForList("sp.getfmrAddy", paramMap);