EJB bean还是普通的Managed Bean?

时间:2014-10-05 02:27:21

标签: java-ee ejb

这是EJB还是ManagedBean?要成为EJB bean,必须由@stateful,@ stateless或@Singleton注释吗?我认为@SessionScoped和@ApplicationScoped类也是EJB 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 个答案:

答案 0 :(得分:1)

@SessionScoped和@ApplicationScoped是ManagedBean而不是EJB的一部分,它将类作为JavaServer Faces的资源。

  • @ApplicationScoped:应用程序范围在所有用户与Web应用程序的交互中持续存在。
  • @SessionScoped:会话范围在Web应用程序中的多个HTTP请求中保持不变。
  • @ViewScoped:在用户与Web应用程序的单个页面(视图)交互期间,视图范围仍然存在。
  • @RequestScoped:在Web应用程序中的单个HTTP请求期间,请求范围仍然存在。

您可以在Java-EE specification

中查看更多详情

这是将EJB注入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;
    }
}