Przechwytywacz dla wywołań zwrotnych cyklu życia może deklarować tylko typy powiązań przechwytywaczy zdefiniowane jako @Target(TYPE)

Ta reguła powoduje oznaczenie wartości @Target innych niż ElementType.TYPE w adnotacjach niestandardowych, które spełniają następujące warunki:

Poniżej znajdują się adnotacje przechwytywacza cyklu życia:

Poniższy przykład nie jest zgodny ze specyfikacją Java EE 7 Contexts and Dependency Injection (CDI) 1.2, ale był tolerowany w implementacji CDI 1.0, która jest oparta na implementacji Apache OpenWebBeans. W implementacji CDI 1.2, która jest oparta na implementacji Weld, aplikacja się nie uruchamia.


@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)
}

Aby rozwiązać ten problem, należy usunąć element ElementType.METHOD z adnotacji @Target i usunąć wszystkie odwołania do tej adnotacji w metodach aplikacji. Jeśli zostaną określone typy elementów inne niż ElementType.TYPE, należy je również usunąć.

Więcej informacji na temat implementacji Java EE 7 CDI 1.2 można znaleźć na stronie Zmiany w działaniu specyfikacji Contexts and Dependency Injection 1.2.