1

私はAspectJを使用して、EJB環境内でメソッドを実行する前にアクセスチェックを行っているため、メソッドの前に制御フローをインターセプトし、アドバイスを提供しています(EJBインターセプターもあることを知っています)。アクセスチェックが失敗した場合、AccessDeniedExceptionをスローしています。残念ながら、私が取得するのは、原因が「AccessDeniedException」のEJBExceptionです。この動作を回避するにはどうすればよいですか?

4

1 に答える 1

2

これは、システムとアプリケーションの例外の違いが原因です。これらは、チェックされていない例外とチェックされている例外にほぼ対応します。

それぞれに特定のプロパティがあります。システム例外はEJBExceptionにラップされ、例外が発生したBeanは破棄され、保留中のトランザクションはすべてロールバックされます。

人々がしばしば望んでいるのは、ロールバックのみを行う、チェックされていない例外です。

独自の例外タイプの1つ(チェックされていない場合もあります)で@ApplicationExceptionを使用し、それに応じてアノテーションの属性を設定することで、このようなものを作成できます。

于 2012-11-20T09:25:17.100 に答える