2014-07-09 4 views
1

저는 생산자가있는 컨트롤러가 있습니다.CDI 서블릿으로의 주입이 작동하지 않습니다.

@Named 
@SessionScoped 
public class UserController{ 

    private User user; 

    //other methods 

    @Produces 
    @User 
    public User produceUser() { 
     return user; 
    } 
} 

사용자를 서블릿에 삽입하면 다른 세션에서도 항상 동일한 사용자 (개체 ID 비교)를 얻을 수 있습니다. CDI Bean에 사용자를 삽입하면 작동하며 현재 세션의 사용자를 얻습니다.

+0

CDI에 익숙하지 않지만 서블릿은 여러 세션에서 지속됩니다. 현재 사용자를 선택하거나 UserService를 삽입하는 프록시를 삽입해야합니다. –

+0

자세한 정보를 입력하십시오. 어떤 컨테이너를 운영하고 있습니까? CDI 등의 버전은 무엇입니까? –

+0

주입 점이있는 서블릿과 사용자 객체를 만드는 방법을 보여줄 수 있습니까? – Yuri

답변

1

UserController은 세션 범위이지만 제작자는 아닙니다. 나는. 생산자는 @Dependent 범위를 가지므로 User 빈은 서블릿이 초기화 될 때 한 번 주입됩니다.

생산자 방법에 @SessionScoped을 추가하십시오.

관련 문제