2014-10-05 2 views
1

이것은 EJB 또는 ManagedBean입니까? EJB bean이 되려면 @stateful, @stateless 또는 @Singleton으로 주석을 달아야합니까? @SessionScoped 및 @ApplicationScoped 클래스도 EJB 빈이라고 생각했습니다. 이게 옳은 거니?EJB bean 또는 일반 Managed Bean?

import javax.faces.bean.SessionScoped; 
import javax.inject.Named; 

@Named("userData") 
@SessionScoped 
public class UserData implements Serializable { 

private static final long serialVersionUID = 1L; 

public UrlData data; 

public UrlData getData() { 
    return data; 
} 

public void setData(UrlData data) { 
    this.data = data; 
}  
} 

답변

1

는 @SessionScoped 및 @ApplicationScoped는 자바 서버의 자원이 직면하지 클래스 ManagedBean은 EJB의 일부이다.

  • @ApplicationScoped : 응용 프로그램 범위는 모든 사용자가 웹 응용 프로그램과 상호 작용할 때까지 유지됩니다.
  • @SessionScoped : 세션 범위는 웹 응용 프로그램의 여러 HTTP 요청에서 지속됩니다.
  • @ViewScoped : 사용자가 웹 응용 프로그램의 단일 페이지 (보기)와 상호 작용하는 동안 뷰 범위가 유지됩니다.
  • @RequestScoped : 요청 범위는 웹 응용 프로그램의 단일 HTTP 요청 동안 지속됩니다.

당신은 Java-EE specification

에서 자세한 내용을이 "(콩" "또는"@ApplicationScoped @SessionScoped 어떤을 포함하여) 많은 콩 "ManagedBean은

@ManagedBean 
@SessionScoped 
public class Count { 
    @EJB 
    private CounterBean counterBean; 

    private int hitCount; 

    public Count() { 
     this.hitCount = 0; 
    } 

    public int getHitCount() { 
     hitCount = counterBean.getHits(); 
     return hitCount; 
    } 
    public void setHitCount(int newHits) { 
     this.hitCount = newHits; 
    } 
} 
+0

에 EJB를 삽입하는 예제 코드입니다 볼 수 있습니다 동시 액세스가 가능하므로 EJB 3.2에서 제공하는 동시성 관리가 특히 유용합니다. 대부분의 세션 및 응용 프로그램 범위 콩은 EJB 여야합니다. " 나는 JEE 7을 소개하는 데모에서도 이것을 보았습니다. 모순입니까? – marlon

+0

아니요, 해당 설명은 managedbean이 @EJB annotation을 사용하여 EJB에 액세스 할 수 있음을 의미합니다. 하나의 세션 빈 (예 : EJB, ManagedBean)을 다른 세션 빈(), 관리 빈을 세션 빈에, 세션 빈을 관리 빈에 주입 할 수 있습니다. – wittakarn

+0

간단히 말하면, stateful, stateless 또는 singleton으로 명시 적으로 주석 처리 된 bean 만 EJB이고, 그렇지 않으면 managed bean입니까? – marlon