1

自从我开始学习 JSF 以来,我正在审查我的代码。最复杂的问题之一再次出现。CDI 和 EJB 之间的决定。

我正在使用三层,我想知道在每一层上使用哪种类型的注释: - 支持 bean(MVC 中定义的控制器) - 服务层 - DAO 的

只要我不需要来自 EJB 的任何东西,我的支持 bean 就使用 CDI。但我被其他两个困住了。我记得读过关于使用 EJB bean 的文章,因为池功能可以防止大量请求(或攻击,如果你愿意的话)。简而言之,考虑到安全性或其他任何事情(不包括 ViewScoped),是否有任何理由使用 EJB(无状态、有状态、LocalBean 等)?

提前致谢。

4

2 回答 2

4

你在这里犯了一个概念上的错误。CDI 绝对不是 EJB 的替代品。默认情况下的 CDI 根本不提供事务管理。CDI 是 bean 管理和依赖注入 API,而不是服务层 API。为了在 CDI 中管理事务,您必须添加另一个 API 以及一堆其他注释。

CDI 可以替换例如 JSF 托管 bean 注释,但绝对不能替换 EJB 注释。

所以没有有效的“CDI vs EJB”问题。两者都有自己完全不同的目的。请注意,您可以在基于 CDI 的托管 bean 类中完美地注入基于 EJB 的服务类。

至于安全性,不清楚为什么您在标题和标签中提到该部分,但 CDI 和 EJB 之间的决定与安全性无关(仅仅是因为首先没有有效的“CDI vs EJB”问题)。

于 2012-10-22T17:45:08.063 回答
0

是的,当您需要对事务、并发、池等的开箱即用支持时。

于 2012-10-22T17:22:51.753 回答