【问题标题】:Is it harmful to inject en EJB into a viewscoped Bean?将 en EJB 注入 viewscoped Bean 是否有害?
【发布时间】:2013-05-11 01:50:04
【问题描述】:

在我的 Web 应用程序中,我有一个表示层,由几个 jsf-viewscoped 和一些 requestscoped bean 组成。通常我只想在这些中包含表示逻辑,所以每当有超出表示逻辑的任务时,我都会使用另一个 Bean 或 EJB。所以在一些viewscoped Beans中我注入了一个EJB。我现在的问题如下:我是否应该通过创建另一个(例如应用程序范围)仅将方法调用委托给相应 EJB 的 bean 来避免将 EJB 直接注入用于演示的 Bean 的情况? 并且: 注入的 EJB 何时初始化?如果它在注入它的 bean 的初始化过程中被初始化,那么这是否意味着对于我的应用程序的每个访问者,总是还保留一个 EJB?我认为情况并非如此,但仅在调用其中一种方法时才使用 EJB。但是我应该如何正确地分离业务层和表示层呢?

【问题讨论】:

    标签: jakarta-ee jsf-2 ejb java-ee-6 n-tier-architecture


    【解决方案1】:

    将 EJB 注入视图范围的支持 bean 是常见的,也是最佳实践。

    (视图范围的)支持 bean 负责处理任何与视图相关的问题,并将业务逻辑委托给 EJB bean。

    通常(但不一定)视图 bean 在其 PostConstruct 中从 EJB bean 加载数据,然后在回发期间保留这些数据。这对性能和一致性都非常有益。

    【讨论】:

    • 啊,好吧,我想我那里出了点问题。有人可以说 viewscoped bean 不属于表示层而是属于应用程序层?表示层将由 jsf 页面组成?
    • 是的,表示层仅由 Facelets 组成。检查Understanding JSF as a MVC framework。问候,
    • 序列化呢?当我在像这样的 viewscoped bean 中注入 EJB 时,会出现序列化错误......
    • @salihcenap 好话,值得提出一个新的顶级问题!从理论上讲,代理将被序列化,并且代理应该只是一个类似于 (jndi) 引用的字符串。它应该很好地序列化。我知道在实践中它并不总是那样工作:(
    猜你喜欢
    • 2015-04-15
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 2017-12-18
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多