Google でこのトピックを少し検索したところ、いくつかのベスト プラクティスが見つかりました。しかし、具体的なアドバイスが必要です。私は、サーブレット/Struts2/JSP からの DAO への呼び出しを持つ J2EE アプリに取り組んでいます。そのため、アプリはあらゆる種類のめちゃくちゃです。ほとんどのデータは、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 に記録されます。
しかし、私は次のことをしたい:
- ユーザーにカスタム エラー ページを提示する
- server.log ではなく myapp.log にエラーを記録します (log4j を使用しているため、他の場所でこれを行います)。
これを行う最善の方法は何ですか?web.xml に何かを追加する必要がありますか? リスナーのように?それが唯一の変更ですか、それとも既存のコードを変更する必要がありますか?
コードはエラー チェックを行いません。以下のようにSPを呼び出すだけです
getSqlMapClientTemplate().queryForList("sp.getfmrAddy", paramMap);