Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

8.6. コンテナーインターセプター

8.6.1. コンテナーインターセプターについて

JSR 318, Enterprise JavaBeans 3.1 仕様で定義されている標準の Java EE インターセプターは、コンテナーがセキュリティーコンテキストの伝搬、トランザクション管理、およびその他コンテナーによる呼び出し処理の完了後に実行されることが予想されます。これは、特定のコンテナーインターセプターを実行する前にアプリケーションが呼び出しをインターセプトする必要がある場合に問題になります。
JBoss EAP 6.0 より前のリリースでは、サーバー側インターセプターを呼び出しフローにプラグインする方法が提供されていたため、コンテナーが呼び出し処理を完了する前に特定のアプリケーションロジックを実行できました。この機能は JBoss EAP に実装されました。この実装により、標準の Java EE インターセプターをコンテナーインターセプターとして使用できます。つまり、3.1 バージョンの ejb-jar デプロイメント記述子の ejb-jar.xml ファイルで許可されているものと同じ XSD 要素を使用します。

インターセプターチェーン内のコンテナーインターセプターの配置

EJB 用に設定されたコンテナーインターセプターは、JBoss EAP が提供するセキュリティーインターセプター、トランザクション管理インターセプター、およびその他のサーバーが提供するインターセプターの前に実行されることが保証されています。これにより、特定のアプリケーションコンテナーインターセプターは、呼び出しが進む前に、関連するコンテキストデータを処理または設定できます。

コンテナーインターセプターと Java EE インターセプター API の違い

コンテナーインターセプターは Java EE インターセプターと同様にモデル化されますが、API のセマンティクスにはいくつかの違いがあります。たとえば、コンテナーインターセプターがjavax.interceptor.InvocationContext.getTarget()これらのインターセプターは、EJB コンポーネントがセットアップまたはインスタンス化されるずっと前に呼び出されるためです。