2013-11-26 5 views
2

Я читаю некоторые уроки относительно Interceptors в java ee, но есть некоторые темы, которые не покрываются широко. Поэтому я был бы признателен, чтобы любое лицо, имеющее ответы на следующие вопросы:В каком порядке используются перехватчики?

1) В каком порядке перехватчики execueted в случае целевой класс содержит @AroundInvoke метод, как:

@Interceptors({PrimaryInterceptor.class, SecondaryInterceptor.class}) 
@Stateful 
public class OrderBean { 
... 
    @AroundInvoke 
    private void last(InvocationContext ctx) { ... } 
... 
} 

У меня создалось впечатление, что первый он исключает класс перехватчика taget, а именно метод last в приведенном выше случае, а затем два перехватчика на уровне класса в порядке, указанном внутри аннотации. Я прав?

2) Что такое Timeout Interceptors (содержащие методы с аннотацией @AroundTimeout), а когда они являются excecuted?

ответ

3

Цитирование documentation.

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

  • Внешних перехватчики

  • По умолчанию перехватчиков, если они присутствуют

  • класса перехватчики, если он присутствует

  • Метод перехватчики, если они имеются

  • метод перехватчик на классе компонента (с использованием @AroundInvoke)

В пределах каждой группы (по умолчанию, класс, метод) порядок перехватчики слева направо, как это определено в @Interceptors аннотации, а затем перехватчики XML.

И второй вопрос - @AroundTimeout используется вместе с EJB таймеры, перехватчик вызывается всякий раз, когда метод с аннотацией @Schedule таймаутов - увидеть это example.

+0

эта документация говорят, что «... а затем XML-перехватчики.», Который означает, что порядок представляет собой аннотации, а затем XML. Почему я не могу найти это в спецификации перехватчика (я думаю, что это только документация Jboss, которая может отличаться от другой документации)? – Tarik

Смежные вопросы