EJB三种bean

        在EJB中定义了三种bean,分别是会话bean ,实体bean,和消息驱动bean。很显然,会话bean,就是用来管理会话相关(一次服务器请求)相关信息的。实体bean,就是在管理数据持久化的bean。消息驱动bean就是用来发送或者接受消息的管理bean。每种bean都有自己的特点。下边我们就分别讲述一下各个bean。

          会话bean。

          会话bean,他是EJB的核心,主要负责处理业务逻辑。他按照是否需要为请求保存状态,又分为有状态的会话bean,和无状态的会话bean。

         无状态的会话bean,无状态的含义就是对谁都是一样的,不回保存某个请求的特定信息,或者同一个用户,两次请求同一个bean,这个bean也会把他作为两次请求来分别处理他们。为了实现有效的Bean实例处理,EJB容器经常会使用实例池技术。而在程序中使用@stateless注解来声明一个状态bean是有状态的还是无状态的。

        

         有状态的会话bean,就是他会保存用户的一些信息。 当它处于待命状态之后,它可以接受一个客户端的调用,一旦有某个客户端调用它之后,那么他就持有该客户端与服务器之间会话状态信息,这些信息导致它只能被该客户端调用,不能被其他客户端调用。如果SessionBean对应的客户端长时间不再调用它,那么EJB容器就不能让它一直处于EJB容器中(占着位置,但又不干活),这对系统资源是一种巨大的浪费,因此EJB容器将会把该SessionBean转入去活状态。

         当一个有状态的SessionBean处于去活状态后,如果在有限时间内,该EJB对应的客户端再次调用了该SessionBean,那么EJB容器将会把该SessionBean从去活状态中恢复过来,让它重新转入待命状态,这样他就可以再次向客户端提供服务了。

        实体bean

       实体Bean是管理持久化数据的一个对象,潜在使用一些相关的Java对象并且可以依靠主键被唯一识别。通过包括@Entity元注释来指定一个类是一个实体Bean。实体Bean表示来自数据库的持久化数据,例如客户表中的一个记录,或者一个员工表中的一个员工记录。实体Bean也可以被多个客户端共享。例如一个员工实体能够被多个计算一个员工每年工资总额或者更新员工地址的客户端使用。实体Bean对象特定变量能够保持持久化。实体Bean中所有没有@Transient元注释的变量需要考虑持久化。EJB3.0的一个主要特色是创建包含使用元数据注释的对象/关系映射实体Bean的能力。例如,指定实体Bean的empId变量映射到employee表中的EMPNO属性,象下面实例中一样用@Table(name="Employees") 注释这个表的名字和用@Column(name="EMPNO")注释empId变量。另外,EJB3.0中的一个特色是你可以很容易的在开发时测试实体 Bean,可以用Oracle Application Server Entity Test Harness在容器外部运行一个实体Bean。

         消息驱动Bean

         说道消息驱动bean就不得不说JMS,他是一种java消息服务,JMS的客户端之间可以通过JMS服务进行异步的消息传输,JMS支持两种消息模型:Point-to-Point和Publish/Subscribe(pub/sub),即点对点和发布/订阅模式。这两种消息传递模型非常相似,但有以下区别:

            PTP  消息传递模型规定了一条消息只能传递给一个接收方。

            Pub/sub  消息传递模型允许一条消息传递给多个接收方。

       消息驱动 Bean(MDB)是设计用来专门处理基于消息请求的组件。MDB 负责处理消息,而EJB容器则负责处理服务(事务、安全、资源、并发、消息确认,等等),使 bean 开发者把精力集中在处理消息的业务逻辑上。如果你不使用 MDB,则必须编写一部分这些服务。MDB 像一个没有 local 和 remote 接口的无状态 Session Bean,它和无状态 Session Bean 一样也使用了实例池机制,容器可以为它创建大量的实例,用来并发处理成百上千个 JMS 消息。正因为 MDB 具有处理大量并发消息的能力,所以非常适合应用在一些消息网关产品。

        一个 MDB 通常要实现MessageListener 接口,该接口定义了 onMessage()方法。Bean 通过它来处理收到的 JMS 消息。

        当容器检测到 bean 守候的管道有消息到达时,容器调用 onMessage()方法,将消息作为参数传入 MDB。MDB 在onMessage()中决定如何处理该消息。你可以使用注释指定 MDB 监听哪一个目标地址(Destination)。当 MDB 部署时,容器将读取其中的配置信息。

        如果一个业务执行的时间很长,而执行结果无需实时向用户反馈时,也很适合使用 MDB。如订单成功后给用户发送一封电子邮件或发送一条短信等。

       以上就是EJB的三种bean,我们简单的了解了每一个bean都是用来干什么的,以后我们项目中继续加深我们对他的了解!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值