java - CDI和EJB,安全问题?

标签 java security jsf ejb cdi

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

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

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

提前致谢。

最佳答案

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

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

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

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

关于java - CDI和EJB,安全问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13015504/

相关文章:

java - JSF : how to force creating a new managed bean instance for every browse instance

java - Apache CXF : adding custom documentation in the WSDL?

java - 添加现有代码模型的方法

java - Hibernate @ManyToMany 映射给出异常

ruby - 如何只允许访问某些特定的 ruby​​ 类?

jsf - 从 quartz 作业调用应用程序范围的 bean 中的方法

java - 将自定义数据与 Swing 控件相关联?

javascript - 使用ajax get方法加载网站信息是否安全?

php - 仅允许来自 Android 应用程序的 PHP 请求

jsf - 使用点 <f :facet> instead of an attribute or a child component