Пакет javax.interceptor

Содержит аннотации и интерфейсы для того, чтобы определить методы перехватчика, классы перехватчика и для обязательных классов перехватчика, чтобы предназначаться для классов.

См.:
          Описание

Сводка интерфейса
InvocationContext Представляет контекстную информацию о прерванном вызове и операциях, которые позволяют методам перехватчика управлять поведением цепочки вызова.
 

Аннотация Вводит Сводку
AroundInvoke Определяет метод перехватчика, который вмешивается на бизнес-методах.
AroundTimeout Определяет метод перехватчика, который вмешивается на методах тайм-аута.
ExcludeClassInterceptors Используемый, чтобы исключить class уровни перехватчики для бизнес-метода или метода тайм-аута целевого class.
ExcludeDefaultInterceptors Используемый, чтобы исключить перехватчики значения по умолчанию для целевого class или для бизнес-метода или метода тайм-аута целевого class.
Перехватчик Определяет, что class является перехватчиком.
InterceptorBinding Определяет, что тип аннотации является типом привязки перехватчика.
Перехватчики Объявляет упорядоченный список перехватчиков для целевого class или метода целевого class.
 

Пакет javax.interceptor Описание

Содержит аннотации и интерфейсы для того, чтобы определить методы перехватчика, классы перехватчика и для обязательных классов перехватчика, чтобы предназначаться для классов.

Методы перехватчика

Метод перехватчика может быть определен на целевом class непосредственно или на перехватчике class, связанный с целевым class.

Есть три вида метода перехватчика:

Метод перехватчика может быть определен, аннотируя метод, или используя дескриптор развертывания EJB. Методы перехватчика не могут быть объявлены static или final.

У перехватчика class или целевой class могут быть многократные методы перехватчика. Однако, у перехватчика class или целевой class может быть не больше, чем один метод перехватчика для определенного типа перехвата: AroundInvoke, AroundTimeout, PostConstruct, PreDestroy, PrePassivate или PostActivate.

Классы перехватчика

class перехватчика является class (отличный от целевого class), чьи методы вызываются в ответ на вызовы и/или события жизненного цикла на целевом class. Любое число классов перехватчика может быть связано с целевым class.

У перехватчика class должен быть общедоступный конструктор без параметров.

Классы перехватчика могут быть аннотированы @Interceptor, но это не требуется когда @Interceptors или дескриптор развертывания EJB используется, чтобы связать перехватчик с его целевыми классами.

Определение классов перехватчика целевого class

Классы перехватчика целевого class или метод целевого class могут быть определены несколькими способами:

Любой перехватчик class может быть определен, чтобы примениться к целевому class на уровне class. В случае перехватчиков метода перехватчик применяется ко всем методам целевого class. В случае перехватчиков метода тайм-аута перехватчик применяется ко всем методам тайм-аута целевого class.

@ExcludeClassInterceptors или дескриптор развертывания EJB может использоваться, чтобы исключить вызов перехватчиков уровня class для метода целевого class.

Перехватчик метода может быть определен, чтобы применяться только к определенному методу целевого class. Аналогично, перехватчик метода тайм-аута может быть определен, чтобы применяться только к определенному методу тайм-аута целевого class. Однако, если перехватчик, class, который определяет методы перехватчика обратного вызова жизненного цикла, определяется, чтобы примениться к целевому class на уровне метода, методы перехватчика обратного вызова жизненного цикла, не вызывается.

Перехватчики значения по умолчанию

Перехватчики значения по умолчанию могут быть определены, чтобы примениться к ряду целевых классов, используя дескриптор развертывания EJB. Перехватчики значения по умолчанию вызываются перед любыми другими перехватчиками для целевого class. Дескриптор развертывания EJB может использоваться, чтобы определить альтернативные упорядочивания.

@ExcludeDefaultInterceptors или дескриптор развертывания EJB может использоваться, чтобы исключить вызов перехватчиков значения по умолчанию для целевого class или метода целевого class.

Жизненный цикл перехватчика

Жизненный цикл экземпляра перехватчика является тем же самым как тем из целевого экземпляра class, с которым это связывается. Когда целевой экземпляр создается, соответствующий экземпляр перехватчика создается для каждого связанного перехватчика class. Эти экземпляры перехватчика уничтожаются, когда целевой экземпляр уничтожается.

И экземпляр перехватчика и целевой экземпляр создаются перед любым @PostConstruct обратные вызовы вызываются. Любой @PreDestroy обратные вызовы вызываются перед разрушением или целевого экземпляра или экземпляра перехватчика.

Экземпляр перехватчика может содержать состояние. Экземпляр перехватчика может быть целью внедрения зависимости. Внедрение зависимости выполняется, когда экземпляр перехватчика создается, используя контекст именования связанного целевого class. @PostConstruct метод обратного вызова перехватчика вызывается после того, как это внедрение зависимости имело место и на экземплярах перехватчика и на целевом экземпляре.

Перехватчик class совместно использует контекст именования предприятия своего связанного целевого class. Аннотации и/или элементы дескриптора развертывания XML для внедрения зависимости или для прямого поиска JNDI относятся к этому совместно используемому контексту именования.

Перехватчики для обратных вызовов жизненного цикла

Метод перехватчика обратного вызова жизненного цикла является незаключительным, нестатическим методом с типом возврата void целевого class (или суперкласс) или любого перехватчика class. У метода перехватчика обратного вызова жизненного цикла, объявленного целевым class (или суперкласс), не должно быть никаких параметров. У метода перехватчика обратного вызова жизненного цикла, объявленного перехватчиком class, должен быть единственный параметр типа InvocationContext.

@PostConstruct
public void interceptPostConstruct(InvocationContext ctx) { ... }

Единственный метод перехватчика обратного вызова жизненного цикла может использоваться, чтобы вмешаться на многократных событиях обратного вызова.

@PostConstruct @PreDestroy
public void interceptLifecycle(InvocationContext ctx) { ... }

class, возможно, не объявляет больше чем один метод перехватчика обратного вызова жизненного цикла для определенного события жизненного цикла.

Вызовы метода перехватчика обратного вызова жизненного цикла происходят в пределах неуказанной транзакции и контекстов защиты.

Методы перехватчика обратного вызова жизненного цикла могут бросить исключения на этапе выполнения, но не проверенные исключения.

См. Также:
AroundInvoke, AroundTimeout, Interceptors, InvocationContext


Представьте ошибку или функцию

Авторское право © 2009-2011, Oracle Corporation и/или его филиалы. Все права защищены. Использование подвергается срокам действия лицензии.

Сгенерированный на 10-February-2011 12:41


Spec-Zone.ru - all specs in one place



free hit counter