关于EJB的持久化对象技术分析 - 编程入门网
接收客户端的消息的。
会话EJB 会话EJB的特点是不能同时被多个客户端共享。当客户端调用会话EJB的方法时,先经过EJB容器处理,然后再由容器对会话EJB进行调用。会话EJB处理开发者编写商业逻辑,容器再将处理结果返回给客户端。会话EJB不能在多个会话中持久保存。它分为两种类型:有状态的会话EJB和无状态的会话EJB。 有状态的会话EJB 当一个客户端与某一个有状态的会话EJB开启一个会话时,这个EJB为客户端维护了一个会话状态。这暗示着客户端向此EJB发出不同的调用请求之间保证EJB的成员变量值不会丢失。 一旦客户端结束与有状态的会话EJB的交互后,EJB容器会自动销毁它。于是整个会话结束,并且此有状态的会话EJB所保存的状态数据会全部丢失。 无状态会话EJB 无状态会话EJB并不为客户端保存任何状态数据。你可以这样认为:客户端每次对无状态会话EJB的调用都会产生一个新的EJB实例,因此所有的状态信息都不会保存。 同样,EJB容器也不会持久化任何无状态会话EJB,因此开发者必须意识到客户端与无状态会话EJB之间进行交互时,所有的状态数据都是临时的。无状态会话EJB的这种特性使得容器可以重复地使用它的实例,因此无状态会话EJB能得到比有状态会话EJB更好的性能。 实体EJB 实体EJB表达的的是一种持久存储的商业逻辑,通常存储于关系型数据库中。实体EJB与关系型数据库有如下的相似之处: · 实体EJB是持久的――它可以在应用程序的生命周期之外存在,甚至可以在EJB容器的生命周期以外存在。 · 实体EJB允许共享访问――多个客户端可以共享同一个实体EJB,而容器负责管理它们之间的同步。 · 实体EJB有主键――主键用来确定实体EJB的一个唯一实例,利用它可以找到一个特定的持久化实体。 · 实体EJB有事务的概念――由于客户端能并发访问并修改它的数据,因此事务管理是非常重要的。事务管理属性被显示地定义在部署描述文件中,而容器负责管理事务的边界。 要实现对象-关系映射,那实体EJB必须能提供插入、更新、查询、删除的操作。而用于管理实体EJB对象与数据源之间的映射的过程被称为持久化。换句话说,持久化是一个将信息写入外部数据源的一个过程。EJB规范定义了实体EJB的两种持久化方式:Bean自身管理的持久化(BMP)和容器管理的持久化(CMP)。 Bean自身管理的持久化(BMP) 如果你选用BMP,那你必须在你的代码中负责维护所有的持久化发。那么所有的数据层访问代码都必须由开发者来完成,这种方式能带给开发者更大的灵活性。 容器管理的持久化(CMP) 如果你选用CMP,那你不用编写数据层访问代码,EJB容器将会为你管理所有的持久化。因此,数据层访问代码与数据源之间是松耦合的。这能减轻开发者的代码编写量,并且使得CMP能部署到不同厂商的应用服务器中,也不必关心具体的数据源(参见图1)。 图1 会话EJB与实体EJB的关系:此图显示了EJB容器在客户端与EJB实例中充当的代理角色。 关于EJB的持久化对象技术分析(3)时间:2010-12-04EJB部署与运行时环境 我们将以JBoss3.0.2作为EJB部署与运行时环境的服务器。我们将设计一个简单的WEB应用,它允许创建用户帐号,用户通过访问WEB浏览器,而WEB浏览器通过调用一个servlet来取得这个帐号,这个servlet与一个实体EJB相互通信(参见图2)。 图2.通过web访问EJB:此图显示了一个客户端请求是怎样从客户端传到应用层的。当这个作为控制器的servlet接收到客户请求后,它将这个请求转化一个业务请求并向业务服务层调用相应的服务。业务服务层使用一个或多个实体EJB来从数据层中取得或保存数据。 编写并部署一个实体EJB 以下四个步骤是开发一个实体EJB的典型流程: 1. 为你的实体EJB编写相应的类及接口 2. 编写相应的部署描述文件 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |