EJB及其基本分类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lxy344x/article/details/51286670

定义:     

       EJB是sun的JavaEE服务器端组件模型,设计目标与核心应用是部署分布式应用程序。简单来说就是把已经编写好的程序(即:类)打包放在服务器上执行。凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台。EJB (Enterprise JavaBean)是J2EE(javaEE)的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具(SDK)。 在J2EE里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。

      EJB在架构中所处的位置如上图,EJB在J2EE开发中的详细:

     

   ps:图片摘自:http://www.cnblogs.com/MyITHome/archive/2012/08/31/2665917.html

分类:

           

    Session Bean (会话bean)

        什么叫会话(Session)即从客户端获取的EJB对象开始,然后调用的EJB的方法,直到客户端生命周期结束,或客户端释放了EJB对象为止,称为一次会话

       会话Bean可以执行业务逻辑操作,比如注册用户、订单登记、数据库操作

        什么事对象的状态?即其实例变量。

        什么叫有状态的会话Bean?(Stateful Session Bean  )

         即EJB能够为同一个客户端在多次请求之间保持状态信息。

       如下图

        

    什么是无状态会话(Stateless Session Bean)?

    并非说EJB不能存在状体,而是说EJB容器不会对EJB的状态做管理;

    容器会使用实力池的方式,甚至单例的方式来实现无状态的Session Bean。

     因为EJB容器不会对Stateless Session Bean 的状态进行管理,所以它的性能要比Stateful Session Bean 的好。

 下面从spring里对比有状态与无状态的区别

     

EJB的调用方式

             包括本地调用和远程调用;

          远程客户端--客户端与其调用的EJB对象不在同一个JVM进行中;

                                它可以是web组件、应用客户端、或其它的企业Bean;

                                对远程客户端来说,企业Bean的位置是透明的;

                                为了创建一个能够被远程客户端访问的企业Bean,你必须用@Remote注解来定义这些企业Bean。        

本地客户端--客户端与其调用的EJB对象在同一个JVM进程中;

                       它可能是一个web组件或别的企业Bean;

                        为了创建一个能够被本地访问的企业Bean,你必须用@local定义这些企业Bean。

                       一个企业Bean接口可以同时被定义为@Remote和@Local

远程访问调用方式

    

本地访问方式

      

什么情况下用EJB?

    1、分布式。分布式对象之间互相协作,完成特定的业务功能。分布式对象之间应事先分布透明性,即在客户端调用时无需指定分布式对象的位置(通过配置来解决)。
    2、分布式对象之间的事务支持(RMI不支持事务)
    3、应用程序需要支持不同的客户端,只需要少量的代码,就可以让远程客户端访问企业Bean。

什么情况下不使用EJB?

   1、较为简单的纯Web 应用开发,不需要用EJB。
    2、需要与其他服务程序配合使用的应用,但调用或返回的自定义的网络协议可以解决的应用程序,不需要使用EJB。
    3、较多人并发访问的C/S 结构的应用程序,尽量不要使用EJB。

展开阅读全文

没有更多推荐了,返回首页