2012-07-23 69 views
2

我已经多次读过EJB重量级的东西......但昨天晚上,我正在浏览关于EJB的Java EE 6教程,它们似乎只是普通的Java对象,除了它们可以具有诸如无状态或单例之类的注释之外。除此之外,它们(包括非常基本的)教程中包含的功能非常标准,就像MVC应用程序中的模型类一样。什么让企业bean“重量级”?

  1. 那么为什么会遇到对EJB很消极的态度?
  2. 为什么我看到它说,他们是绝对不需要绝大多数的网络应用程序?
  3. 什么使他们“重量级”?
+1

EJB为企业应用程序带来了许多好处,包括事务,消息传递,RPC等。额外的设计,编码和应用程​​序服务器支持它们可能被认为是“重量级”,如果您没有选择适当类型的EJB它可能会削弱你的表现。例如,在无状态会话EJB可能已经足够的情况下,实体EJB通常是性能崩溃的原因。 EJB需要“查找”和实例化,而远程客户端需要客户端库,通常需要J2EE应用服务器,如JBoss,WebLogic,WebSphere。 JBoss是开源的,但是后者是2 $$$。 – 2012-07-23 10:15:15

+0

-1如果你的消息来源不能提供任何这些点,那么它们可能不是很好。同样,EJB在EJB 3.1中有很长的历史,因为您在Java EE6中看到的内容与您在2004年可能见过的内容完全不同。我建议您也检查源代码中的日期。这个问题也是非常主观和非常开放的。 – Justin 2012-07-23 10:15:24

+0

@MikeS EJB实体Bean(不要与JPA实体混淆!)完全不推荐使用,因此很少使用。 EJB不需要查找,但可以很容易地注入。什么是J2EE应用程序服务器?你是否刚刚从2004年开始使用时间胶囊? – 2012-07-23 16:02:20

回答

5

有几个原因让EJB bean变得重量级。

第一个是罗德约翰逊的言辞。对于采用Spring的人来说,重要的是Rod要传播EJB重量级的想法(因此Spring会自动轻量化)。 Springsource是一个商业组织,Rod是一个聪明的商人。用Spring的人越多,他们最终将从SpringSource购买支持合同的比例越大。

第二个来源是Spring狂热分子,他从来没有尝试过EJB,但总是从Rod和其他狂热分子那里听说EJB是重量级的。他们只是吟唱他们听过的歌。

第三个来源是2004年和之前被EJB 2烧毁的人。这个版本的EJB的确是重量级的。当时人们回过头来看EJB,从不回头,完全没有意识到EJB 3发生了,就像您观察到一种非常轻巧且易于使用的技术一样。