[转] EJB 3和Spring技术体系比较

  • 时间:
  • 浏览:3
  • 来源:5分排列5_5分排列3

同时,EJB3组件中,支持多种土方式注入,比如依赖于名称、接口机会JNDI名,另外还支持使用@PersistenceContext注入EntityManager,@Resource注入服务器资源,如EJBContext、TimerService等,而两种Annotation机会成为JDK6的一累积,将来机会直接被JDK支持。

原文出处:http://www.51cto.com/specbook/223/440090.htm

EJB规范无缘无故由国际组织JCP来制定,一经通过,即作为官方标准,且各厂商还要不遗余力的推动,全都对于企业应用来说,EJB假如有一天法,以EJB为企业应用的基础架构暂且称为法治;Spring来自开源社区,由众多的开源软件开发者参与,逐步形成的两种流行的体系标准,它的设计以IoC(反转控制)为核心,提倡所谓的“零”侵入设计原则,这里暂且称之为民主。

public int subtract(int x, int y) {

EJB3中的Web Service和EJB组件集成得那末之好,使用起来再简单不过了,如下面实例所示,JAX-WS也将逐步成为Java Web Service事实标准;至于Spring可不还要实现各种基于Http的远程调用土方式,其优势暂且明显。

支持EJB的应用服务器一般是从前大而全的产品,包括了构建企业应用还要的方方面面,机会还要额外扩展一般不容易,机会对从前应用服务器不满意搞笑的话,那末可不还要且可是我能更换整个应用服务器了,好在机会应用服务器市场百花齐放,从免费到低端再到高端,您可不还要任意挑选;Spring从IoC容器发展而来,通过不断集成AOP、MVC、OR/Mapping以及几乎您能想到的各项服务而提供完善的企业应用架。对于从前应用,让他自由挑选具体的技术框架的实现,SSH假如有一天最常用一套组合,然因此不说算是每个架构师拥有正确挑选的能力,无论咋样,最终的挑选在设计之初一旦挑选,要想更换便不那末容易,你不机会轻松的将从前基于Spring + Struts的应用轻松的移植到Spring + WebWork,更要能轻松的将从前基于Spring + Hibernate的应用轻松的移植到Spring + iBatis,全都对于还要长期维护和发展的应用来说,将要能寄希望于你采用的框架都要能很好的发展,因此能在升级的同时保证向前的兼容性。

而对于Spring,还要同样的现象报告 ,轻量级的内核,假如有一天原应整个框架是轻量的,更不原应基于Spring的整个应用架构是轻量的。对于 Spring,你还要去寻找并粘合各种服务,因此我们 歌词 都 要能稳定的在同时工作,机会应用对技术的需求较多,伸缩性要求也较高,你就会不断的在应用服务中加入两种服务,如:资源池、消息队列、集群等。当加入哪些地方地方后,Spring的正确处理方案机会和Java EE Application Server正确处理方案一样重量级了。

期待从前轻量的真正以开发需求为中心的EJB3应用服务器的总出 ,为疲软的EJB市场注入新的活力!

AOP方面,机会您还要彻底的AOP,因此在Spring中集成了AspectJ,那末EJB3自然无法虚实结合 ,因此机会您的项目以够用为原则,只还要一般土方式拦截意义上的AOP,EJB3提供的各种回调土方式应该可不还要满足您的要求了。

最近在学习EJB 3,对于SSH与EJB3,无缘无故不太明白“即生瑜,何生亮?”,今天无意看后一篇旧文,比较系统的对比了这二种技术架构,转载于此:

基于Spring架构的应用,机会过分的自由和灵活,随着项目的进展,逐渐集成的第三方框架那末来很多,没能保证集成的服务和编写的组件带有那末漏洞,甚至相互之间有严重的冲突,那末,掌控整个项目的质量成了现象报告 ,光是一页接一页的配置文件,就知道今后的维护成本也就随之增高,回想一下EJB2.0时代的ejb-jar.xml吧;而EJB机会集成的还要标准服务,因此组件模型也是固定的,加之应用服务器一般提供控制台,用来查看运行时的各项属性,并可对服务进行实时的管理,显然比Spring开发的应用可控性更好。

4.5、Web Services

Cluster也是EJB的传统优势,因此老师说,要能发挥EJB集群优势的地方暂且多,机会即使项目中采用了EJB,一般也采用Stateless SessionBean,而使用HttpSession Cluster,既然那末,无论EJB还是Spring,我们 歌词 都 还要平等的。当然,机会您正在构建从前大型的应用,对集群的能力要求非常高,比如还要事务级的Cluster,因此还有分布式的需求,那末估计那末几个因素会让您考虑Web Server + Spring的架构了。

2.轻量级组件 VS 轻量级内核 VS 轻量级容器

4.功能性对比

5.总结

EJB的看家本领,Spring也通过提供TransactionTemplate以及集成第三方事务正确处理器来支持JTA,都支持申明式事务,可不还要BMT,CMT,但无论咋样,移植的器官总也那末自身长的好吧。

追求简单、轻量,是每从前应用架构的目标,对于企业应用的构建来说,轻量级组件标准+轻量的内核+轻量级的容器,并以此构建轻量级的应用平台,才是最终还要的。机会有轻量级的容器总出 ,将帮助EJB3在企业应用中重新处在有利的地位。

一般使用Java EE体系的公司都认为这是EJB的最大长处,因此实施暂且如想象那样,一来绝大多数还要Web应用,依赖Web提供的分布式能力机会可不还要满足90%的还要了,二来我们 歌词 都 基本上还要Web容器和EJB容器整体部署,EJB组件的分布部署少之又少。当然机会您还要Web层和应用层分开部署,那末Spring一定那末你的考虑范围之内了。

-------------------------------------------------------------------

作为从前架构师,我对EJB是既爱且恨,对Spring又恨又爱,现在我们 歌词 都 来也把这两大技术体系来做从前全面分析和对比,希望能给我们 歌词 都 在进行技术选型时从前更好的参考。

1.法制 VS “民主”

}

EJB组件从前被认为是从前重量级的组件,而备受批评,EJB3规范的重要目标假如有一天比较复杂EJB的开发,提供从前容器管理的轻量级的组件方案。

@Remote

@Local

@WebService(endpointInterface = "jfox.test.ejb3.webservice.Calculator")

public class CalculatorBean implements CalculatorRemote, CalculatorLocal {

public int add(int x, int y) {

在IoC的能力Spring要略强两种,因此在EJB3中可不还要全部用Annotation土方式进行注入,在开发上要简单全都,对于两种相对比较固定的注入,采用Annotation更好,而对于两种机会还要无缘无故变动的注入,XML更加灵活,EJB3刚好提供了从前的两种正确处理方案。机会你机会患有XML恐惧症,那末EJB3无疑将给您以解脱。

4.6、集成第三方框架

4.3、分布式能力

4.4、Cluster能力

因此有必要提醒一下,轻量级的组件,暂且原应提供服务的容器是轻量的,不管是EJB2还是EJB3,应用服务器机会还要管理组件的负责生命周期以及行为,因此内置提供了各项服务,容器自然是从前重量级的服务;大慨现在看来,现有的Application Server提供的容器都还过高 够的轻量,从其他人偏好来说,让他非常喜欢JBoss 2.4两种版本,它有我还要的功能,同时又够简单,而现在,JBoss 4的启动效率机会逐渐让他 对它对离开了耐心。

3.可管理性与可控性

纵观人类历史,官方过于强势,则必然官逼民反;而民间力量过于强大,社会必将不稳定,这还我想要们 歌词 都 不愿看后的,在技术世界里也一样。对于EJB3 和Spring这两种方案,Spring现在处在压倒性的优势一方,希望EJB3的总出 ,一来能为官方挽回两种离开的领地,二来要能继续引发更多的探讨,不再拘束于一家之言,要能百家争鸣的环境,要能让开发人员和架构人员对企业应用的构建认识得更加完善,全都最好的土方式是EJB3和Spring互相有益于,和谐发展。

综上所述,EJB机会对于整个世界是标准的,就好像是一部国际法,一旦遵循,全球通用,让他比较轻松的在WebSphere、WebLogic甚至 JBoss之间进行切换,全都机会挑选EJB,你将在从前”法制”的环境下获得最大的民主;而Spring对于整个世界看似民主的,然而一旦整套架构挑选下来,却成了专制,犹如美国式的民主,一旦被它征服,就成为它的专政统治了,想挣脱它的控制可就不那末容易了,其中的利害,我们 歌词 都 细细品味吧。

两种现象报告 对于一次性交付的项目我知道你还要现象报告 ,因此对于质量要求更高、生命周期更长的产品,却是衡量平台和架构的重要因素。

机会还要集成第三方框架的如果,估计您还要Spring了,当然前提是Spring机会给出很好的集成方案;而机会采用EJB,则还要视特定的应用服务器了,推荐当类库来用,机会使用context listener来启动,是在不行,要能基于特定的应用服务器来进行集成,一般来说,应用服务器均提供了JMX集成能力。

4.1、IoC容器,AOP能力

4.2、事务正确处理

#p#

关于轻量级内核,不论属实算是,现今的应用服务器都宣称采用了微内核技术,在此基础上建立Java EE的各项服务构建成完善的应用服务器;而Spring两种假如有一天从前基于IoC的轻量内核,因此通过集成第三方的服务器来提供全部的架构。