7.12. 例外の管理
JSF には例外処理に関して制限があります。 この問題に対処するため、 Seam はアノテーションを付けるか XML ファイルで宣言することで例外クラスの処理を定義することができます。これは EJB3 標準の
@ApplicationException
アノテーションと組み合わされ、例外がトランザクションロールバックの原因となるかどうかを指定します。
7.12.1. 例外およびトランザクション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Bean のビジネスメソッドにより例外が送出されるときに、その例外が現在のトランザクションに直ちにロールバックが必要としてマークするかどうかを制御する明確なルールを EJB は規定します。システム例外 により常にトランザクションロールバックが発生します。アプリケーション例外 はデフォルトではロールバックを発生させませんが
@ApplicationException(rollback=true)
が指定されるとロールバックが発生します (アプリケーション例外とはすべてのチェック例外、 または @ApplicationException
アノテーションが付いたすべての非チェック例外です。 システム例外とは @ApplicationException
アノテーションがないすべての非チェック例外です)。
注記
ロールバックとしてトランザクションにマークが付けられるのと、実際にトランザクションをロールバックすることは異なります。例外ルールではトランザクションにロールバックのマークが付けられることだけ言及していますが、 例外が送出された後でもそれはアクティブのままである可能性があります。
Seam は EJB3 例外のロールバックルールを Seam JavaBean コンポーネントに対しても適用します。
これらのルールは Seam コンポーネント層内でのみ適用されます。 例外が Seam コンポーネント層の外側で発生すると Seam はアクティブなトランザクションをすべてロールバックします。