2015-02-24 2 views
0

Почему мой перехватчик не работает?JSF Interceptor не срабатывает

MyLog.java

@Inherited 
@InterceptorBinding 
@Retention(RUNTIME) 
@Target({METHOD, TYPE}) 
public @interface MyLog { 
} 

MyLogger.java

@Interceptor 
@MyLog 
@Priority(Interceptor.Priority.APPLICATION) 
public class MyLogger { 
    @AroundInvoke 
    public Object log(InvocationContext context) throws Exception{ 
     System.out.println("begin " + context.getMethod().getName()); 
     Object obj = context.proceed(); 
     System.out.println("end " + context.getMethod().getName()); 
     return obj; 
    } 
} 

PerguntaController.java

import interceptor.MyLog; 
import java.io.Serializable; 
import java.util.List; 
import javax.ejb.EJB; 
import javax.ejb.EJBException; 
import javax.inject.Named; 
import javax.enterprise.context.SessionScoped; 
@Named("PerguntaController") 
@SessionScoped 
public class PerguntaController implements Serializable { 

    @EJB 
    private PerguntaFacade ejbFacade; 

    @MyLog 
    public List<> getAll() { 
     return ejbFacade.getAll(); 
    } 

    @MyLog 
    public void update(Pergunta pergunta) { 
     ejbFacade.update(pergunta); 
    } 
} 

PerguntaFacade.java

import interceptor.MyLog; 
import java.util.List; 
import javax.ejb.Stateless; 
import javax.persistence.EntityManager; 
import javax.persistence.PersistenceContext; 
@Stateless 
public class PerguntaFacade { 
    @PersistenceContext(unitName = "WebApplicationPU") 
    private EntityManager em; 

    @MyLog 
    public List<Pergunta> getAll() { 
     return em.createQuery("SELECT p FROM Pergunta p", Pergunta.class).getResultList(); 
    } 

    @MyLog 
    public void update(Pergunta pergunta) { 
     //do something 
    } 
} 

При использовании GETALL и обновление (от PerguntaController) в JSF страницы не срабатывает перехватчик ни GETALL и обновления на PerguntaFacade. Что я делаю неправильно?

+0

Пожалуйста, добавьте свой импорт .. 'PerguntaController' CDI bean или JSF Managed Bean? –

+0

Это бит CDI. Я использую старую рыбку. – ulima69

+0

Какая версия GlassFish? –

ответ

0

Решено.

beans.xml с bean-discovery-mode="annotated" не работает. Затем измените на bean-discovery-mode="all" и отлично работает.

Смежные вопросы