1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Implementação de interceptor CDI

Boa tarde,

Já faz uns dois dias que estou tentando implementar um Interceptor, mas o método interceptador não está executando o método de interceptação, não sei onde posso estar errando, mas vai as etapas que fiz:

1- Criei um projeto Java. 2- converti para maven. 3- adicionei as dependências do Weld e JUnit.

4- criei a anotação para utilizar depois na interceptação

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

}

5- criei a classe do interceptor

@Interceptor
@Pira
public class PiraInterceptor implements Serializable {

    private static final long serialVersionUID = 1L;

    @AroundInvoke
    public Object logMethodEntry(InvocationContext ctx) throws Exception {
        System.out.println("Entering method: " + ctx.getMethod().getName());

        return ctx.proceed();
    }

}

6- criei uma classe para ter um método e eu anotar ele com a minha anotação

public class Service {

    @Pira
    public void fazerCoisa(){
        System.out.println("Fazendo a coisa!!!");
    }

}

7- criei uma pasta no projeto chamada resources, nela adicionei uma pasta chamada META-INF e dentro dela criei um arquivo padrão beans.xml, e referenciei a classe do interceptor.

<beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:res="urn:java:net.resourceAuth"
    xsi:schemaLocation="
    http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">

    <interceptors>
        <class>br.com.pirocoptero.interceptor.PiraInterceptor</class>
    </interceptors>

</beans>

8- criei uma classe de teste para testar

public class InterceptorTest {

    @Test
    public void testeInterceptor(){
        new Service().fazerCoisa();
    }

}

ao final de teste, ao invés de aparecer no console "Entering method: Fazendo a coisa!!!

aparece apenas Fazendo a coisa!!!

alguém sabe o que pode estar errado?

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags cdi weld java ou faça a sua própria pergunta.