`

J2EE的EJB容器与轻量级容器的比较

    博客分类:
  • Java
阅读更多
J2EE--之EJB的没落与轻量级服务器的崛起
    前言:好久一段时间没关注过j2ee了, 昨天恶补了一下。不看不知道,一看吓一跳! J2EE在过去一年发生了如此大的变化:EJB, 那个曾经作为J2EE核心部件的概念,如今似乎已经没落了, 落得人人喊打的地步了!!!继而兴起了一批新的概念:AOP, IoC轻量级服务器,POJO...  
    真的感慨万千。在2004年还无限风光的EJB, 在2005年便落到这种地步了! 于是让我怀疑: 当前那么急切的紧跟EJB潮流是否值得? AOP又能持续多久? 是否还要紧跟所谓的时尚技术? 以后如何应对新技术潮流的变迁?
    本来这个技术圈子没有一个严格的标准,就是一个婆说婆有理,媳说媳有理的事!这个圈子从来没缺少过争吵!J2EE与.net吵, C++ 与JAVA吵, Linux与Windows吵...  感觉真的很乱,让人无所适从!
    跑题太远了,还是转入正题吧!
   一、EJB为我们提供了什么?
       1. 声明性事务管理
          避免编写大量的事务管理代码, 通过声明来完成事务性管理
       2. 持久性管理
          通过使用entity bean 来实现O/R mapping 即对象到关系数据库的影射 
       3. 安全性管理
          开发者可以在EJB的部署描述文件中进行方法级的、基于角色的安全性管理
       4. 生命周期管理
          它实际上是为了实现EJB的持久性管理和资源管理而衍生出的功能。由于EJB实例对象和的生命周期是由EJB容器负责维护的,所以EJB实例对象的状态通常是不可预期的。于是EJB提供了一组生命周期管理接口, 供用户对EJB的生命周期进行一定的控制管理。
       5. 资源管理
          在J2EE的缓冲池中,不仅有对象实例池,还有资源管理池。例如:将数据库连接放入连接池中,其主要作用是防止以外情况时,不断的加载造成连接被全部耗尽!
       6. 并发访问管理
          也就是线程管理。EJB让开发者以编写单线程程序的方式编写业务对象,同时能使这些业务对象运行在多线程环境。
       7. 业务对象管理(寻址服务)
          借助JNDI为服务对象提供目录服务。EJB的部署描述文件提供了一个从服务名称到实现对象的影射,从而消除了业务接口(EJB组件接口)与实现类之间的耦合。
       8. 远程访问
         EJB本身设计就是分布式的,它通常是基于RMI来实现。
       9. 集群
         EJB曾被称为获得J2EE应用最大可伸缩性的不二法门。当然它有着出众的集群能力, 可方便的实现横向、纵向的集群,而不只是简单的应用的拷贝。
   二、EJB的缺陷
         EJB容器为EJB提供了一个优越而全面的服务环境! 这是它的优点,但也是它被人诟病的缺点: 很少有用到这么全面的服务的业务对象, 但不管用不用到这些服务都要为它埋单!因此在实施成本和性能上会有很大的损耗!
        尽管当前的高端商业应用服务器在性能上有很强的表现,但是价格不菲!而开源的应用服务器在性能表现上并不能让人满意!
         另外在如下一些方面也存在一些不足
      1. 远程调用
         EJB极大的简化了远程调用。但是EJB规范混淆了远程和组件模型。它往往会诱使人们采用一种并不适用且昂贵得体系结构。这对设计是有害的。
       2. 集群方面
        其实,机群的重点不应该在J2EEweb的应用业务对象层,通常专门的业务层集群不是很必要。相比而言,数据访问层,数据库层才是集群的重点!不过像 EJB这种比较笨重的东西需要集群也是可以理解的。^0^
       3. 侵入性
        为了使用EJB的服务业务对象必须实现EJB的特定接口!从而影响了原业务对象的固有形式!(其实在IoC中这个问题也没有真的完全解决。)
   三、用什么方法代替EJB?
        从EJB架构到轻量级架构:
       1. 对于本地对象: local EJB => 应用AOP注入操作代码的POJO  
        就分布式对象而言无状态session bean当然还是最好的选择!   
       2. 容器:EJB 容器=>IoC容器
       3. entity bean => Hibernate或JDO
         entity bean 早就被人们看作是不成功的废品了。这里就不多说了。
      关于IoC容器, 以Spring架构为例说明它将如何以及在什么程度代替EJB容器。Spring一个开源的IoC容器实现。
      1. 声明性事务管理、声明性安全、并发管理: Spring框架内置支持该功能。
      2. 资源管理、业务对象管理: 是J2EE应用服务器提供的功能,它并不是EJB容器的特性。String支持这种能力。
      3. 远程访问:
      4. 生命周期管理:
      5. 集群管理:支持横向集群,也就是应用的横向复制。    
   四、EJB目前还在坚守的阵地!
      1. SLSB即无状态的session bean 还在被使用。在大型的企业级服务应用中,尤其涉及到需要横纵向集群方式的。SLSB仍是当前的最佳选择。只是,这种项目可能会很少接触到!而在一般情况下,我们应该考虑使用IoC, 而不是EJB.
      2. MDB即消息驱动Bean, 这主要是目前轻量级服务器暂时没有一个规范性的实现策略。这只是暂时的, 因为轻量级服务器要想真的替代EJB,这个问题必须解决!(在Spring 2.0中已经有了异步JMS)
分享到:
评论

相关推荐

    轻量级J2EE企业应用实战

    《轻量级J2EE企业应用实战》这本书的介绍透露了相当丰富的J2EE开发知识点。首先,J2EE(Java 2 Platform, Enterprise Edition)是指Java平台的企业版,它是用于开发和部署企业级应用的一套规范和标准,其目的是为了...

    j2ee ejb.rar_J2EE_ejb_j2ee e

    随着技术的发展,现代J2EE已经演进为Java EE(后来称为Jakarta EE),引入了更多的轻量级框架,如Spring,简化了EJB的使用。然而,EJB作为企业级开发的基石,理解其原理和工作方式对于成为一名合格的J2EE开发者至关...

    j2ee ejb3.1

    在EJB 3.0中,已经引入了许多重大的改进,包括注解驱动的配置、无容器依赖的POJO(Plain Old Java Object)实体、以及轻量级会话bean。EJB 3.1在此基础上进一步强化了这些特性,使企业级开发变得更加友好和高效。 1...

    轻量级J2ee企业应用实践 pdf

    7. **部署与容器**:讨论如何在Tomcat、Jetty等轻量级应用服务器,以及GlassFish、JBoss等全功能应用服务器上部署J2EE应用。 8. **性能优化**:提供性能调优的技巧,包括代码优化、数据库查询优化、内存管理和并发...

    j2ee ejb编程实例

    实体bean的映射不再依赖于XML,而是通过注解完成,使得EJB更加轻量级,更接近POJO(Plain Old Java Object)。 9. **EJB与Java Persistence API(JPA)**: JPA是Java EE中用于对象关系映射的标准,常与实体bean...

    EJB容器的实现方式研究学习笔记

    动态代理是EJB容器实现的一种常见方法,尤其适用于轻量级的应用服务器。在这种方式下,容器在运行时动态地生成一个代理类,该类实现了客户端所调用的接口。当客户端调用EJB方法时,实际上是在调用这个代理类,由代理...

    深入Spring2-轻量级J2EE开发框架原理与实践

    《深入Spring2:轻量级J2EE开发框架原理与实践》是一本专注于Spring2版本的权威指南,它详尽地介绍了Spring框架的核心特性和实际应用。Spring作为Java开发领域中的一个基石,以其轻量级、模块化和依赖注入特性,极大...

    Java理论与实践:让J2EE脱离容器

    Java理论与实践:让J2EE脱离容器,探讨的是如何在非J2EE容器环境中使用J2EE的一些关键服务,从而让J2EE应用程序能在更轻量级的J2SE环境中运行。通常,J2EE应用程序依赖于完整的J2EE容器来提供服务,如EJB、JTA、JNDI...

    J2EE ejb 教程

    这使得EJB更加轻量级,更易于使用,消除了早期版本EJB的复杂性。 六、EJB与Web层交互 在J2EE应用中,EJB通常与Servlets、JSF(JavaServer Faces)或其他Web框架结合使用。Web层负责用户界面,EJB处理业务逻辑,...

    轻量级J2EE企业级应用实战

    本文将详细介绍轻量级J2EE企业级应用实战的知识点,重点内容围绕JavaEE基础开发知识、三大框架Struts2.2、Spring3.0、Hibernate3.6的使用方法,以及如何将这些技术整合应用于实际项目中。 首先,我们需要了解JavaEE...

    Why J2EE Without EJB.pdf

    - **灵活的技术栈**:利用诸如控制反转(IoC)和面向切面编程(AOP)等新技术,可以构建更加轻量级和灵活的基础架构。 - **降低成本**:相比传统的EJB架构,这种简化的方法可以显著降低开发和维护的成本。 - **提高...

    Expert One on One J2EE Development Without EJB

    1. **轻量级容器的应用**: - **Spring框架**:作为本书的重点,Spring框架被广泛认为是替代EJB的有效解决方案之一。Spring提供了一种灵活的方式来管理对象的生命周期和依赖关系,同时也支持声明式事务管理和AOP...

Global site tag (gtag.js) - Google Analytics