EJB可伸缩性:由于什么

时间:2013-06-22 12:40:08

标签: java ejb scalability

您能否简单解释一下,由于EJB实现了什么可伸缩性,以及我将面临哪些问题,例如,如果我不将EJB用于大型应用程序

提前致谢。

3 个答案:

答案 0 :(得分:2)

EJB不会为您提供任何特殊的可伸缩性奖励,并且不使用它们也不会受到惩罚。

一些“EJB是可扩展的”炒作来自对象池被视为性能助推器的日子。

EJB可以帮助您以两种方式编写有效的代码:

  • EJB体系结构有一种在几台机器上传播业务逻辑的方法(使用远程接口和JNDI查找允许您在不修改代码的情况下在服务器之间移动处理)。
  • EJB可以通过轻松共享持久性上下文来帮助您充分利用JPA,并且在某些情况下,可以使用相同的上下文进行多次调用。

但如果没有EJB,上述两个目标都是可以实现的。

无论如何:你应该使用它们,因为它们确实使代码更好,更容易维护。这两种品质通常有助于构建可扩展的应用程序。

答案 1 :(得分:1)

  

由于EJB实现了可伸缩性,您能简单地解释一下吗

通过在集群中部署EJB来实现可伸缩性:http://docs.oracle.com/cd/A97688_16/generic.903/a97677/cluster.htm。简而言之:每个请求都将由群集中的一个服务器接收。然后,此服务器决定它是否自己处理请求,或将其转发到另一台服务器。哪个服务器将处理请求由一些可配置的算法决定,最简单的是循环(即第一个请求进入服务器1,第二个请求进入服务器2,依此类推)。

但是,根据我的经验,不在EJB级别上进行群集更容易,而是更高级别。这意味着,有一个(外部)负载均衡器接收所有请求并将它们转发到包含EJB的应用程序服务器(再次通过某些算法,如循环法)。在这种情况下,应用程序服务器不必彼此了解,这更容易配置。

但是,在某些情况下,可能需要EJB级别的群集,例如,如果您有有状态会话bean ,则必须支持会话故障转移(即,服务器当前正在崩溃时处理请求,会话必须移动到另一个服务器,以便用户不会注意到任何事情)。但这很少是必要的。

  

我将面临哪些问题,例如,如果我不使用EJB   大型应用。

我建议使用EJB或Spring作为大型应用程序的替代方案。这些框架负责处理您自己必须自己做的细节编程,如下所示

  • 开启和关闭交易
  • 提供对资源的访问(如数据库连接)
  • 依赖注入
  • 支持面向方面编程
  • 还有更多......

如果使用Spring,您甚至不必部署到成熟的应用程序服务器,而是可以使用简单的servlet容器。

答案 2 :(得分:0)

我认为这个问题是基于错误的前提。

您无法通过使用EJB或任何其他技术来“实现可伸缩性”。通过设计可伸缩性来实现可伸缩性;即避免瓶颈(各种瓶颈)并避免资源的低效使用。