CDI: Utilizando Interceptores em Diferentes Módulos / Arquivos de Bean

Meu aplicativo Java EE 6 consiste em uma guerra e um módulo ejb empacotado no arquivo ear. Estou usando o CDI para DI (ou seja, tenho um arquivo beans.xml nos dois módulos). Também quero usar um interceptor de registro definido no módulo ejb no módulo war. Ativei o interceptador no beans.xml do ejb:

<beans>
    <interceptors>
        <class>com.test.interceptor.LoggingInterceptor</class>
    </interceptors>
</beans>

Isso está funcionando apenas para as classes anotadas com o interceptador nomódulo ejb. As classes no módulo war não são interceptadas (embora também estejam anotadas no interceptador). Eu pensei que a solução seria habilitar o interceptador no interceptador da guerra também (como acima). Mas o aplicativo não pode ser implantado com a seguinte mensagem:

SEVERE: Exceção ao carregar o aplicativo: WELD-001417 Classe de classe interceptador ativada com.test.interceptor.LoggingInterceptor não é anotada @Interceptor nem é registrada por meio de uma extensão portátil

Meu LoggingInterceptor fica assim:

@Log
@Interceptor
public class LoggingInterceptor {
    private static final Logger logger =  Logger.getLogger(LoggingInterceptor.class.getName());

    static {
        logger.setLevel(Level.ALL);
    }

    @AroundInvoke
    public Object logMethod(InvocationContext ctx) throws Exception {
        logger.log(Level.FINE, "ENTRY {0} {1}",
                new Object[]{ ctx.getTarget().getClass().getName(), ctx.getMethod().getName() });
        long startTime = System.nanoTime();
        try {
            return ctx.proceed();
        } finally {
            long diffTime = System.nanoTime() - startTime;
            logger.log(Level.FINE, "RETURN {0} {1}",
                new Object[]{ ctx.getTarget().getClass().getName(), ctx.getMethod().getName() });
            logger.log(Level.FINE, "{0} took {1} ms", new Object[]{ ctx.getMethod(),
                    TimeUnit.MILLISECONDS.convert(diffTime, TimeUnit.NANOSECONDS)});
        }
    }

}

E a ligação do interceptor:

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

Como posso usar o interceptador para os dois módulos?

questionAnswers(5)

yourAnswerToTheQuestion