2016-04-22 9 views
5

jax-rs Webサービスから呼び出されるいくつかのEJBがあります。しかし、私がEJBメソッドの1つを呼び出すたびに、私はインターセプタを使って呼び出しをインターセプトしています。このインターセプタは、APIキーのパラメータをチェックし、存在しない場合、またはデータベースに存在しない場合は、jax-rsコードでキャッチする例外がスローされます。しかし、私のjax-rsクラスは、例外が検査例外になる可能性があるにもかかわらず、この例外がスローされる可能性について知らないので、ここではどのようなベストプラクティスですか?例外をスローせずにスローすることを宣言する

  1. 私の例外チェックされない例外を作成し、とにかくそれをチェックする(これまでの彼ら自身を投げずに)私のEJB例外をスローすることを宣言?
  2. 他に何かありますか?

答えて

1

未確認の例外をスローするのが最も良いとわかりました。その後、例外マッパーを使用して例外をキャッチし、それを処理します。

https://docs.oracle.com/javaee/6/api/javax/ws/rs/ext/ExceptionMapper.html

残っている唯一のことは、ログファイルに例外出力を抑制することです。

+1

EJBでチェックされていない例外をスローすると、 '@ ApplicationException'を使用する必要があります。そうしないと、EJBコンテナは例外をロールバックしてEJBExceptionに変換します。 –

0

インターセプタは、RuntimeException(たとえば、InvalidParametersException)をスローすることができます。そして、すべてInvalidParametersException例外を扱う特別なサーブレットを作成することができます。この目的のためにweb.xmlに特別なmappingを作成する必要があります。

+0

例外を処理する特別なサーブレット以外のオプションはありますか?おそらく私は仕事に迎撃器を置くことができますか? – Terabyte

関連する問題