Контекст:CDI перехватчик Scope аннотацию
Wildfly 8.1.0
с CDI 1.2
В соответствии с CDI
спецификации CDI1.2
, вам не нужно объявить КДИ в beans.xml
если он помечается @Priority(somepriorityvalue)
Однако, следующие перехватчики cdi никогда не вызываются, если я не добавлю аннотацию @Dependent
@RequiresLoggedInAccount
@Interceptor
@Priority(Interceptor.Priority.APPLICATION)
public class MyInterceptor {
@AroundInvoke
public Object intercept(final InvocationContext ic) throws Exception {
//intercept something and then...
return ic.proceed();
}
}
и связывание перехватчика:
@Inherited
@Documented
@InterceptorBinding
@Target({METHOD, TYPE})
@Retention(RUNTIME)
public @interface RequiresLoggedInAccount {
}
Обратите внимание, что перехватчик связывания и перехватчик определен в другом модуле баночки от того, где они используются (поэтому цель для @Priority).
Это что-то, что я упустил? Почему я должен добавить область CDI
@Dependent
для перехватчика?
Это потому, что я конкретно указано в beans.xml
bean-discovery-mode="annotated"
WildFly 8.1 поставляется с Weld 2.1. Вы обновили вручную до Weld 2.2? –
@JohnAment О, проклятый. Он поставляется с CDI 1.1, объясняет ли это поведение? – maress
будет ли это объяснять, почему аннотирование одного перехватчика с двумя разными InterceptorBindings заставляет перехватчик не загружаться? – maress