0

私のテクノロジー スタックは、Tomcat (サーブレット 3.0)、Jersey for JAX-RS、Spring、および Hibernate です。Hibernate でのデータ変換エラーのように予期せぬ事態が発生した場合、Tomcat がデフォルトで出力しようとする例外のスタックトレースをクライアントに見せたくありません。ただし、これらの例外をログに記録して、何が問題なのかを見つけて修正できるようにしたいと考えています。

私の最初の試みは、JAX-RS の ExceptionMapper を使用し、それが私の問題を解決するだろうと単純に考えることでした。しかし、Jersey が独自の例外をスローすることに気付きました。たとえば、マップされていない URL は com.sun.jersey.api.NotFoundExceptions です。これにより、望ましくない 404 例外がログに記録されます。さらに悪いことに、クライアントは 404 ではなく、ステータス コード 500 を受け取ります。

jersey がスローする例外の例外マッパーを作成することもできましたが、何かを見落とす可能性があります。このようなもののベストプラクティスはありますか?

4

2 に答える 2

7

Jersey によって直接スローされるすべての例外は WebApplicationException のサブクラスであるため、それらをすべてキャッチしたい場合は、そのクラスの ExceptionMapper を作成するだけで十分です。

于 2013-01-28T13:11:59.627 に答える
0

このページを見てください:http://www.rexsl.com/rexsl-core/trap.html。Webアプリケーションですべてのランタイム例外をキャッチする方法/キャッチする方法について説明します。推奨されるソリューションは、ExceptionMapperJAX-RS例外のみをキャッチします。これは、特にDBとHibernateを使用している場合は十分ではありません。

ExceptionTrapクラスのソースコードはこちらです。

于 2013-01-28T15:25:00.003 に答える