¿Cómo puedo detectar errores globalmente, registrarlos y mostrar al usuario una página de error en la aplicación J2EE?
He buscado un poco este tema en google y he visto algunas de las mejores prácticas. Pero necesito algunos consejos específicos. Estoy trabajando en una aplicación J2EE que tiene servlets / Struts2 / Call to DAO's de JSP's. Entonces, la aplicación está en mal estado. La mayoría de los datos se obtienen a través de procedimientos almacenados, a los que llama iBatis ORM / Spring. A veces, cuando se produce un error en el lado del SP, se mostrará un mensaje feo al usuario, como se muestra a continuación:
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
En este punto, la información anterior se muestra en el navegador y se registra en server.log.
Sin embargo, quiero hacer lo siguiente:
Por favor dime ¿cuál es la mejor manera de hacer esto? ¿Debo agregar algo en web.xml? como un oyente? ¿será ese el único cambio o tendré que cambiar el código existente?
El código no realiza ninguna comprobación de errores. solo llama al SP como a continuación
getSqlMapClientTemplate().queryForList("sp.getfmrAddy", paramMap);