3.4 会话、实体和消息驱动Bean对象


  EJB架构定义了三种类型的企业Bean对象:
  ·会话对象(Session Obect)
  ·实体对象(Entity Obect)
  ·消息驱动对象(Message-Driven Object)
  1. 会话对象(Session)
  一个典型的会话对象具有如下特征:
  ·由一个客户端执行。
  ·自动事务感知。
  ·在一个潜在的数据库中更新共享数据。
  ·不直接表示数据库中的共享数据,虽然它可以访问和更新这些数据。
  ·相对来说是短命的。
  ·当EJB容器停止后被清除掉。客户只能重新建立新的对象来继续计算。
  一个典型的EJB Containe提供一个灵活的运行环境来并发的执行大量的会话对象。
  会话Beans是有状态的。同时EJB规范也支持无状态会话Bean作为一个特殊的情况。有状态(正常)会话Beans和无状态会话Bean的API有很小的差别。
  2. 实体对象(Entity)
  一个典型的实体对象有如下特征;
  ·提供一个数据库的数据视图。
  ·允许多个用户共享访问。
  ·存活时间长(和数据库中的数据一样)。
  ·实体,主键和远程引用可以在EJB容器停止后存活。如果实体的状态被事务更新,同时容器停止,实体的状态自动地重新置为最后一次触发事务的状态。停止对于客户端来说不是完全透明的,在它调用一个实体容器崩溃的时候,客户端可能会收到一个异常。
  特殊的EJB容器和服务器为多个并发的实体对象提供一个可变的运行时环境。
  3. 消息驱动对象
  一个典型的消息驱动对象具有如下特征:
  ·收到某个客户端消息时执行。
  ·自动事务感知。
  ·自动更新共享数据。
  ·不直接代表数据库中的共享数据,虽然它可以访问和更新这些数据。
  ·生命短。
  ·无状态。
  ·EJB容器崩溃时被删除。容器不得不重新建立新的消息驱动对象来继续计算。
  一个典型的EJB容器提供一个灵活的运行环境来同时执行多个消息驱动对象。