Um interceptor para retornos de chamadas de ciclo de vida pode apenas declarar tipos de ligação de interceptor que estiverem definidos como @Target(TYPE)

Esta regra sinaliza valores @Target diferentes de ElementType.TYPE em anotações customizadas que atendem as condições a seguir:

A seguir estão as anotações de interceptor de ciclo de vida:

O exemplo a seguir não obedece à especificação de Contexts and Dependency Injection (CDI) 1.2 de Java EE 7, mas foi tolerado na implementação do CDI 1.0, que é baseada na implementação do OpenWebBeans do Apache. No CDI 1.2, que é baseado na implementação do Weld, o aplicativo não inicia.


@InterceptorBinding
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface MyIInterceptorBinding {}


@Interceptor 
@MyIInterceptorBinding
public class MyIInterceptor {

   @PostActivate
   void postActivate (InvocationContext inv)

   @PreDestroy
   void preDestroy (InvocationContext inv)
}

Para resolver esse problema, remova o ElementType.METHOD a partir da anotação @Target e remova todas as referências para a anotação em métodos de aplicativo. Se algum tipo de elemento diferente de ElementType.TYPE for especificado, ele também deverá ser removido.

Para obter mais informações sobre a implementação do Java EE 7 CDI 1.2, consulte Mudanças de comportamento do Contexts and Dependency Injection 1.2.