何时使用javabean何时使用企业javabean

何时使用javabean何时使用企业javabean,java,jsf,ejb,javabeans,Java,Jsf,Ejb,Javabeans,我想我理解了javabean(JB)和企业javabean(EJB)之间的区别。这个问题有很多答案。但我没有真正找到答案: 如果我用JSF编写javaee软件,我应该选择用ejb编写所有东西(我不需要像CDI那样的模型),还是只编写我认为ejb有优势的东西。例如,如果无状态EJB是可能的,那么是因为性能问题,还是因为我需要事务管理 例如,我想编写一个在线计算器。视图的模型是CDIs。但是,根据模型的要求进行计算的类是什么呢。有什么理由为他们使用EJB吗?使用EJB的主要原因是自动事务处理。如果您

我想我理解了javabean(JB)和企业javabean(EJB)之间的区别。这个问题有很多答案。但我没有真正找到答案:

如果我用JSF编写javaee软件,我应该选择用ejb编写所有东西(我不需要像CDI那样的模型),还是只编写我认为ejb有优势的东西。例如,如果无状态EJB是可能的,那么是因为性能问题,还是因为我需要事务管理


例如,我想编写一个在线计算器。视图的模型是CDIs。但是,根据模型的要求进行计算的类是什么呢。有什么理由为他们使用EJB吗?

使用EJB的主要原因是自动事务处理。如果您不执行数据库工作,那么使用EJB就不会有什么好处。使用EJB也没有性能优势。

无状态会话bean是池式的,并“分配”给来自客户端的单个调用

这意味着它们是自动线程安全的,并且可以保留昂贵的资源来创建资源,而无需一次又一次地创建这些资源,或者将bean放在共享范围内(在共享范围内,它将面临线程安全问题)

如果您发现自己处于需要这种情况,无状态bean可以提高性能

它们还可以通过使用无状态会话bean时发生的隐式请求限制来稳定系统的性能;如果池耗尽,则不会接受对bean的新请求。这有助于防止系统过载。确实接通的电话将获得更好的服务,但有些电话将被丢弃。这通常比所有打电话的人都得到糟糕的缓慢响应要好


还有一些服务目前只可在EJB bean中使用,比如JavaEE定时器服务。有人要求所有Bean都能使用此服务和其他服务,但在Java EE 6甚至Java EE 7中,它只是EJB。

无状态Bean是否总是比JB更有效,因为会话不需要保持?Wotim:Blub?看起来您没有理解EJB上下文中“会话”的含义。它绝对不像你想象的那样代表HTTP会话。仔细阅读@BalusC,不,我知道它们不像CDIs中的http会话。这不是我的困惑。我的困惑是,为什么无状态EJB的性能不比JB好,因为它不必持有会话(没有http会话)