как я могу ловить ошибки глобально, регистрировать их и показывать пользователю страницу с ошибкой в ​​приложении J2EE

Я немного искал эту тему в Google и видел некоторые лучшие практики. Но мне нужен какой-то конкретный совет. Я работаю над приложением J2EE с сервлетами / Struts2 / Call to DAO от JSP. Так что приложение все запутано. Большая часть данных выбирается с помощью хранимых процедур, которые вызываются iBatis ORM / Spring. Иногда, когда ошибка происходит на стороне SP, она отображает уродливое сообщение для пользователя, такое как ниже:

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

В этот момент вышеуказанная информация отображается в браузере и регистрируется на сервере server.log.
Тем не менее, я хочу сделать следующее:

Подарить пользователю страницу с пользовательской ошибкойрегистрируйте ошибки в myapp.log вместо server.log (мы делаем это в некоторых других местах, поскольку мы используем log4j)

Пожалуйста, скажите мне, как лучше всего это сделать? Должен ли я что-то добавить в web.xml? как слушатель? это будет единственное изменение или мне придется изменить существующий код?

Код не выполняет никакой проверки ошибок. он просто вызывает SP, как показано ниже

getSqlMapClientTemplate().queryForList("sp.getfmrAddy", paramMap);

Ответы на вопрос(2)

Ваш ответ на вопрос