• EJB(一)认识ejb


    什么是ejb?


    同样仍旧在这个系列博客之处,谈谈对ejb的认识和理解。

            sun微公司对于ejb的定义大体是这样的,ejb是一套用于开发和部署分布式组件的的架构。采用ejb的架构应用可以是扩展伸缩的,是可以被事务来管理的。可以是一次编写,能够运行在不同的符合ejb规范的应用服务器平台上的。
            java企业级bean。从大面上j2ee来讲,作为企业级开发的一个解决方案之一。从javabean这样一个颗粒的角度来讲,ejb就是一个简单的javabean类。通过打包成jar放到不同的服务器上,以及结合RMI来调用服务器上的ejb对象。

    为什么要ejb?


            企业级开发


                最重要的、理由最充分还是分布式。那么什么是分布式呢?对于企业级的业务逻辑复杂和大数据处理,并且永久的高可靠运行、应对业务处理能力的扩展和伸缩。这个就要求分布式的处理,而ejb就是这样一个拥有分布式及分布式业务处理的可选解决方案。为什么说是可选的,因为在后面还有像spring mvc这样优秀的解决方案。所以这套从j2ee到ejb的解决方案就一直在企业应用领域所使用,当然且把这些ejb的缺点放到一边来学习学习这套解决方案。
            

            ejb3.0


                而相对之前的ejb2.0,ejb3.0通过注解及一些的默认配置使ejb变得更加的“容器化”。极大的简化了之前由于笨重的xml配置,更加轻便敏捷的开发。

    结构


            持久化服务


                    持久化我们应该不陌生,在hibernate、及ibatis还是后面的mybatis都提供了一整套解决方案。在ejb3.0中,有相应的java persistence api。可以将pojo对象映射到数据库中,ejb3.0在2.0基础上统一了这套api规范,使这样的entitybean对象能够在不同场合被使用。
                    
                    ejb 3.0 持久化的搭建:http://fansofjava.iteye.com/blog/336952  


        和hibernate的区别



         首先需要讲明的是ejb是针对企业级开发应用的解决方案,而对于大多数情况下。不是所有的项目和应用都会涉及到如此的大的业务逻辑处理和大数据维护,因为不是每一个电商都能做成阿里的。而hibernate在本质上是针对数据库的crud的提供了一套更为易于操作的解决方案,更准确的讲是在jdbc和sql查询的基础上。更为轻量级和应用,ejb包括了分布式、分布式声明事务、安全以及rmi这一套的规范。两者在合适的场合使用某个就好了,针对的具体的情况去选择。
                

    enterprise bean


                这个部分分为两个方面,session bean和message-driven bean。

    session bean     

      
     stateful session bean


         什么是会话bean?

                 支持业务逻辑操作,从客户端获得ejb对象知道对象销毁这样一个过程称之为session。


         什么是对象的状态?


                 对象的状态的其实就是实例变量(成员变量)的值。对应就是类变量。

        什么叫有状态的会话bean?

                 一个ejb对象能够为同一个客户端在多次请求(即方法调用)之前保持状态信息。
    过程是这样一个过程,每次调用context对象的lookup方法时,其实每次客户端去服务器请求ejb对象时,实际上是在服务器端的对象池里面来取这个ejb对象。因为在ejb类的对象创建之初会给每个对象指定id,类似于sessionID。这个对象是通过原型复制的方式来获取的,这样每次对于客户端来讲都会有一个ejb对象来为它服务。这样就是简单的一个session bean的调用和创建过程。     
                                
                stateless session bean


                其实就是当客户端来请求ejb对象时,每次都是一个ejb对象。这样不能区分不同客户端状态。实现的基本上用单例实现。

                message-driven bean

                        简单理解就是一种处理异步请求的java 类,使ejb能够互相之间交互。

    后序


            总体上来讲ejb是企业开发的一种可选解决方案,也是j2ee中一个很小的部分。有着非常良好的应用架构,当然也不是尽善尽美的。看到这样一句话来形容是最贴切的,你要么把事情做的尽可能简单,让人挑不出毛病;要么把事情做的尽可能复杂,让人找不出毛病。ejb就是后面这种,考虑了企业级开发的很多问题,提供了解决方案。但是鉴于实际运用过程中,就像上面的讲的不是每一个电商都能干到淘宝的级别。过于复杂的开发过程和维护,让人却步。因为人们更倾向于一种简洁快速的开发方式,特别是人们在提出了敏捷开发这样一个前景下。帕累托法则 告诉我们,用最少的时间去完成最重要的部分80%的工作。
        

  • 相关阅读:
    device not found解决方案
    angularjs 中通过 $location 进行路由跳转传参
    js中时间大小的比较
    MySql中Week()函数的用法
    ionic2集成sdk后,连接超时的问题
    SparkContext的初始化(季篇)——测量系统、ContextCleaner及环境更新
    《深入理解Spark:核心思想与源码分析》——SparkContext的初始化(叔篇)——TaskScheduler的启动
    TaskScheduler的启动
    SparkContext的初始化(叔篇)——TaskScheduler的启动
    《深入理解SPARK:核心思想与源码分析》——SparkContext的初始化(仲篇)——SparkUI、环境变量及调度
  • 原文地址:https://www.cnblogs.com/guziming/p/4232667.html
Copyright © 2020-2023  润新知