2013-02-15 2 views
0

У меня возникли проблемы с настройкой перехватчиков Java EE 6 CDI. Я использую встроенную стеклянную рыбу, я указал перехватчик в beans.xml в веб-приложении.Перехватчики не перехватывают

<beans 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation=" 
     http://java.sun.com/xml/ns/javaee 
     http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"> 
    <interceptors> 
     <class>ServiceInterceptor</class> 
    </interceptors> 
</beans> 

Я пытаюсь защитить этот компонент:

@Named 
//@Stateless 
@RequestScoped 
public class SecuredMethodJSFBean /*implements Serializable*/{ 
    @Inject 
    protected SecuredMethodSample securedMethodSample; 

    /* 
    @CurrentUser 
    @SessionScoped 
    @Inject 
    protected RuntimePrincipalAware principal; 
    //protected JSFLoginBean jsfLoginBean; 
    */ 

    public SecuredMethodJSFBean() 
    { 
     super(); 
     System.out.println("creating secured method jsf bean"); 
    } 

    @Secured("adfadfafd") 
    public void doSomething() 
    { 
     //System.out.println("\n\n\n\nprincipal:" + principal); 
     //System.out.println("principal:" + jsfLoginBean.getPrincipal()); 

     //securedMethodSample.doSomething(jsfLoginBean.getPrincipal().getName()); 
     //return(jsfLoginBean.getPrincipal().getName()); 

     //securedMethodSample.doSomething(principal.getName()); 
     //return(principal.getName()); 
     //return("secured-method"); 

     securedMethodSample.doSomething("testing ..."); 
    } 
} 

Что мне нужно сделать, чтобы получить мои перехватчики работает?

Кроме того, я пытаюсь использовать перехватчики для перехвата вызовов метода на бобы, используемые сервлетами. Поскольку эти бобы являются фасолью, я должен уметь их перехватывать. Однако я не могу этого сделать. Сначала я пытался перехватить вызовы методов в сервлетах напрямую, но они не являются CDI-компонентами, поэтому это не имеет смысла.

Спасибо,

Walter

+0

Является ли это полностью квантованное имя перехватчика в beans.xml? Является ли аннотация @Secured определенной как перехватчик? –

+0

Я удалил полное имя по другим причинам, но да, контейнер видит этот файл и анализирует эту строку. Если я вложу что-то фиктивное, оно выдает ошибку. – Walter

+1

Как вы получаете экземпляр этого компонента? – covener

ответ

0

Чтобы ответить на мой вопрос лучше, я сделал следующее:

  1. Я сделал проект EJB вместо кувшина (внутри мавенно).
  2. Я создал файл ejb-jar.xml, указав/объявив мой перехватчик (src/main/resources/META-INF).
  3. в проектах с использованием этого перехватчика, я указал тип как ejb, чтобы он правильно подбирал его.

Walter

1

"Я уточнял перехватчик в beans.xml в веб-приложения"

ли @Secured определен в другом проекте/баночке? В этом случае вам нужно включить его в beans.xml.

+0

Да, это в другом проекте/банке. Да, я включил его. Я думаю, что это ошибка с Glassfish 3.x. – Walter

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